【问题标题】:How to change the toolbar back icon in xamarin forms android如何更改xamarin表单android中的工具栏后退图标
【发布时间】:2018-09-12 11:26:41
【问题描述】:

我正在处理 xamarin 表单。我想更改Toolbar 后退图标怎么做。我搜索了很多。我没有得到适当的解决方案。任何帮助,将不胜感激。 谢谢 普拉文

【问题讨论】:

    标签: c# android xaml xamarin xamarin.forms


    【解决方案1】:

    试试这个

        LoadApplication(new App());
    
        var upArrow = Resources.GetDrawable(Resource.Drawable.abc_ic_ab_back_mtrl_am_alpha);
        upArrow.SetColorFilter(Resources.GetColor(Resource.Color.white), PorterDuff.Mode.SrcIn);
        ActionBar.SetHomeAsUpIndicator(upArrow);
    

    参考文献

    https://forums.xamarin.com/discussion/57791/cant-change-android-back-button-in-xamarin-forms

    https://forums.xamarin.com/discussion/103317/change-navigation-bar-back-button-color-in-xamarin-android

    【讨论】:

    • @Gowhtanman M,感谢您的回复。但我正在使用如下工具栏。 Android.Support.V7.Widget.Toolbar 工具栏 = this.FindViewById(Resource.Id.toolbar); SetSupportActionBar(工具栏);
    • 我需要更改工具栏导航返回图标。如果我使用操作栏,我会得到异常。
    • 这是答案,请检查它兄弟...stackoverflow.com/questions/47323343/…
    • 将自定义主题应用到您的工具栏
    • 第二种解决方案有效。我在 mainactivity 中创建了页面渲染器类。如果我们在 mainactivity 中使用页面渲染器,它将不起作用。我们应该为此创建单独的类。感谢兄弟让我更加专注于解决方案。
    【解决方案2】:

    如何在 xamarin 表单 android 中更改工具栏后退图标

    你可以参考我的回答:How to change navigation page back button in xamarin forms.

    我这里再写一遍:

    我们需要自定义一个NavigationPageRenderer,重写OnPushAsync方法来设置Toolbar的导航图标。

    using AToolbar = Android.Support.V7.Widget.Toolbar;
    [assembly: ExportRenderer(typeof(CustomNavigationPage), typeof(NavigationPageRendererDroid))] // APPCOMP
    ...
    public class NavigationPageRendererDroid : Xamarin.Forms.Platform.Android.AppCompat.NavigationPageRenderer // APPCOMP
    {
        public AToolbar toolbar;
        public Activity context;
    
        protected override Task<bool> OnPushAsync(Page view, bool animated)
        {
            var retVal = base.OnPushAsync(view, animated);
    
            context = (Activity)Xamarin.Forms.Forms.Context;
            toolbar = context.FindViewById<Android.Support.V7.Widget.Toolbar>(Droid.Resource.Id.toolbar);
    
            if (toolbar != null)
            {
                if (toolbar.NavigationIcon != null)
                {
                    toolbar.NavigationIcon = Android.Support.V4.Content.ContextCompat.GetDrawable(context, Resource.Drawable.Back);
                    //toolbar.SetNavigationIcon(Resource.Drawable.Back);
                }
            }
            return retVal;
        }
    }
    

    CustomNavigationPagePCL 中定义:

    public class CustomNavigationPage : NavigationPage
    {
        public CustomNavigationPage(Page startupPage) : base(startupPage)
        {
        }
    }
    

    用法:

    public App()
    {
        InitializeComponent();
    
        MainPage = new CustomNavigationPage(new MainPage());
    }
    ...
    // In MainPage
    private async void Button_Clicked(object sender, EventArgs e)
    {
        await Navigation.PushAsync(new TestPage());
    }
    

    [效果]。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-09-13
      • 2015-11-21
      • 1970-01-01
      • 1970-01-01
      • 2016-01-25
      • 2020-01-25
      • 2019-12-18
      • 1970-01-01
      相关资源
      最近更新 更多