【发布时间】:2018-09-12 11:26:41
【问题描述】:
我正在处理 xamarin 表单。我想更改Toolbar 后退图标怎么做。我搜索了很多。我没有得到适当的解决方案。任何帮助,将不胜感激。
谢谢
普拉文
【问题讨论】:
标签: c# android xaml xamarin xamarin.forms
我正在处理 xamarin 表单。我想更改Toolbar 后退图标怎么做。我搜索了很多。我没有得到适当的解决方案。任何帮助,将不胜感激。
谢谢
普拉文
【问题讨论】:
标签: c# android xaml xamarin xamarin.forms
试试这个
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
【讨论】:
如何在 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;
}
}
CustomNavigationPage 在PCL 中定义:
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());
}
[效果]。
【讨论】: