簡體   English   中英

如何更改 Android 上 MasterDetail 的圖標?

[英]How change icon for MasterDetail on Android?

我有 Xamarin Forms。 我需要更改MasterDetailPage的標准圖標。 屬性圖標在 Android 上不起作用。 我嘗試添加自定義渲染器,但它不起作用。

[assembly: ExportRenderer(typeof(MainPage), typeof(IconNavigationPageRenderer))]
namespace masterDe.Droid
{
    public class IconNavigationPageRenderer : MasterDetailPageRenderer
    {
        public IconNavigationPageRenderer(Context context):base(context) { }
        private static Android.Support.V7.Widget.Toolbar GetToolbar() => (CrossCurrentActivity.Current?.Activity as MainActivity)?.FindViewById<Android.Support.V7.Widget.Toolbar>(Resource.Id.toolbar);


        protected override void OnLayout(bool changed, int l, int t, int r, int b)
        {
            base.OnLayout(changed, l, t, r, b);
            var toolbar = GetToolbar();
            if (toolbar != null)
            {
                for (var i = 0; i < toolbar.ChildCount; i++)
                {
                    var imageButton = toolbar.GetChildAt(i) as Android.Widget.ImageButton;

                    var drawerArrow = imageButton?.Drawable as DrawerArrowDrawable;
                    if (drawerArrow == null)
                        continue;

                    // replace default hamburg icon
                    imageButton.SetImageDrawable(Forms.Context.GetDrawable(Resource.Drawable.icon));
                }
            }
        }
    }
}

GetToolbar()始終為 null。 我該如何解決?

我根據您的代碼在我這邊進行了測試,但它在我這邊可以正常工作。

您可以重新檢查您是否在android平台上正確安裝並設置了nuget Plugin.CurrentActivity

並在OnCreate上調用 Init 方法:

CrossCurrentActivity.Current.Init(this, bundle);

有關此的更多信息,請查看: https://github.com/jamesmontemagno/CurrentActivityPlugin

另外,您可以檢查文件夾layout中是否有布局Toolbar.axml ,代碼如下:

   <android.support.v7.widget.Toolbar
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/toolbar"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="?attr/colorPrimary"
    android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
    android:popupTheme="@style/ThemeOverlay.AppCompat.Light" />

結果是:

在此處輸入圖像描述

注意:你可以參考這個帖子: Change hamburger icon in master detail navigation xamarin forms

暫無
暫無

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

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