簡體   English   中英

如何在跨平台 xamarin 項目的主要解決方案中創建 Android 項目 PageRenderer class 的 object?

[英]How do I create an object of an Android Project PageRenderer class in my main solution in a cross platform xamarin project?

我的起始頁上有一張背景圖片,當應用程序運行時,該圖片會被拉伸以適應屏幕。 我試圖避免這種拉伸,因為它看起來很糟糕。

我在 android 項目中創建了一個頁面渲染器 class:

[assembly: ExportRenderer(typeof(Page), typeof(CustomPageRenderer))]

namespace ChoiceBasedStoryGame.Droid
{
    public class CustomPageRenderer : PageRenderer
    {
        public CustomPageRenderer(Context context) : base(context)
        {
        }

        protected override void OnElementChanged(ElementChangedEventArgs<Page> e)
        {
            base.OnElementChanged(e);
            
            var activity = this.Context as Activity;
            activity.Window.SetBackgroundDrawable(Resources.GetDrawable(Resource.Drawable.cyberpunk_hacker));

            var imageView = activity.FindViewById<ImageView>(Android.Resource.Id.Content);
            imageView.SetScaleType(ImageView.ScaleType.CenterCrop);
        }
    }
}

我想在我的起始頁中引用它:

namespace ChoiceBasedStoryGame
{
    public class StartPage : ContentPage
    {
        public StartPage()
        {
            var renderer = new CustomPageRenderer(this.Context);
            this.BackgroundImageSource = "cyberpunk_hacker.png";
            this.Renderer = new CustomPageRenderer(this.Context);

我收到命名空間“CustomPageRenderer”不存在的錯誤。

但這會導致與“Droid”類似的錯誤。 我驗證了 android 屬性中的引用是正確的。

我試過在頂部添加“使用”:

using ChoiceBasedStoryGame.Droid;

有沒有更簡單的方法可以將背景圖像的比例設置為不拉伸?

謝謝你。

首先,如果您只想對 StartPage 使用自定義渲染器,可以將[assembly: ExportRenderer(typeof(Page), typeof(CustomPageRenderer))]更改為[assembly: ExportRenderer(typeof(StartPage), typeof(CustomPageRenderer))]

您可以查看有關自定義內容頁面的官方文檔以獲取更多詳細信息。

此外,關於如何適當設置頁面的背景圖片,還有很多其他的方法。 比如你可以像我以前的回答那樣使用網格中的圖像控件 您還可以參考這個案例,關於在 Xamarin.Forms 中更改背景圖片的縱橫比,同時保持內容居中

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM