【发布时间】:2021-02-24 03:09:26
【问题描述】:
我正在使用 xamarin Forms(多平台)创建应用程序,我正在使用导航页面,但我想将 箭头(“text(“返回”)
你知道我该怎么做吗? 谢谢
(我将在 Android 应用程序中使用它,但我正在使用 Xamarin 表单创建应用程序)
【问题讨论】:
-
太棒了!!!谢谢,真的很有帮助
标签: xamarin.forms cross-platform
我正在使用 xamarin Forms(多平台)创建应用程序,我正在使用导航页面,但我想将 箭头(“text(“返回”)
你知道我该怎么做吗? 谢谢
(我将在 Android 应用程序中使用它,但我正在使用 Xamarin 表单创建应用程序)
【问题讨论】:
标签: xamarin.forms cross-platform
您可以使用自定义渲染器来移除导航图标并将其设置为文本。但是,当您这样做时,您需要捕获文本的点击并模拟返回事件。
创建接口:
public class CustomNavigationPage : NavigationPage
{
public CustomNavigationPage(Page startupPage) : base(startupPage)
{
}
}
Android的实现:
[assembly: ExportRenderer(typeof(CustomNavigationPage),
typeof(NavigationPageRenderer_Droid))]
namespace NavigationPageDemo.Droid
{
public class NavigationPageRenderer_Droid : NavigationPageRenderer
{
public Android.Support.V7.Widget.Toolbar toolbar;
public Activity context;
public NavigationPageRenderer_Droid(Context context) : base(context)
{
}
protected override Task<bool> OnPushAsync(Page view, bool animated)
{
var retVal = base.OnPushAsync(view, animated);
context = (Activity)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.V7.Content.Res.AppCompatResources.GetDrawable(context, Resource.Drawable.back);
//toolbar.NavigationIcon = null;
toolbar.NavigationIcon = null;
toolbar.Title = "back";
toolbar.SetOnClickListener(new OnClick());
//}
}
return retVal;
}
protected override Task<bool> OnPopViewAsync(Page page, bool animated)
{
return base.OnPopViewAsync(page, animated);
}
}
public class OnClick : Java.Lang.Object, IOnClickListener
{
void IOnClickListener.OnClick(Android.Views.View v)
{
App.Current.MainPage.Navigation.PopAsync();
}
}
在自定义渲染器中,使用OnClickListener 捕获对文本的点击。
【讨论】:
当您使用 xamarin 表单时,建议使用通用组件并尽量少使用自定义渲染器。
现在根据您的要求创建自定义导航栏 所以这里是你可以做到的。
你已经完成了,这会让你有更多的能力在你的导航栏中添加更多的东西,比如图像或工具栏
还可以动态处理您的后退按钮,您可以检查导航堆栈中的计数,如果它为 0,您可以显示汉堡图标,或者如果它大于 0,您可以使用 IsVisible True/False 显示您的标签
【讨论】: