【问题标题】:How could I change the Navigastion's page arrow in Xamarin Forms?如何更改 Xamarin Forms 中导航的页面箭头?
【发布时间】:2021-02-24 03:09:26
【问题描述】:

我正在使用 xamarin Forms(多平台)创建应用程序,我正在使用导航页面,但我想将 箭头(“text(“返回”)

你知道我该怎么做吗? 谢谢

(我将在 Android 应用程序中使用它,但我正在使用 Xamarin 表单创建应用程序)

【问题讨论】:

标签: xamarin.forms cross-platform


【解决方案1】:

您可以使用自定义渲染器来移除导航图标并将其设置为文本。但是,当您这样做时,您需要捕获文本的点击并模拟返回事件。

创建接口:

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 捕获对文本的点击。

【讨论】:

    【解决方案2】:

    当您使用 xamarin 表单时,建议使用通用组件并尽量少使用自定义渲染器。

    现在根据您的要求创建自定义导航栏 所以这里是你可以做到的。

    1. 创建 BaseContent 页面
    2. 在您的基本页面中创建一个控制模板,您可以关注此link
    3. 在您的控件模板中使用网格视图放置带有文本绑定的标签(后退),您也可以在中心放置一个标签以再次显示页面标题您可以使用模板绑定,当您使用时您会知道浏览链接
    4. 现在用您的 basecontentpage 页面继承您的主页
    5. 在主页中添加控件模板
    6. 关闭主页的导航栏

    你已经完成了,这会让你有更多的能力在你的导航栏中添加更多的东西,比如图像或工具栏

    还可以动态处理您的后退按钮,您可以检查导航堆栈中的计数,如果它为 0,您可以显示汉堡图标,或者如果它大于 0,您可以使用 IsVisible True/False 显示您的标签

    【讨论】:

      猜你喜欢
      • 2018-07-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多