首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在xamarin forms android中更改工具栏返回图标

如何在xamarin forms android中更改工具栏返回图标
EN

Stack Overflow用户
提问于 2018-09-12 11:26:41
回答 2查看 1.8K关注 0票数 2

我正在编写xamarin表单。我想改变Toolbar返回图标,如何做到这一点。我搜了很多遍。我没有得到正确的解决办法。任何帮助都将不胜感激。谢谢praveen

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-09-12 11:40:44

尝尝这个

代码语言:javascript
复制
    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

票数 1
EN

Stack Overflow用户

发布于 2018-09-13 05:03:00

如何在xamarin forms android中更改工具栏返回图标

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

我在这里再写一遍:

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

代码语言:javascript
复制
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中定义:

代码语言:javascript
复制
public class CustomNavigationPage : NavigationPage
{
    public CustomNavigationPage(Page startupPage) : base(startupPage)
    {
    }
}

用法:

代码语言:javascript
复制
public App()
{
    InitializeComponent();

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

效应.

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52294052

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档