Xamarin.forms 具有自定义视图的自定义更多选项卡

Xamarin.forms 具有自定义视图的自定义更多选项卡,xamarin.forms,mobile,customization,multiplatform,xamarin.forms.shell,Xamarin.forms,Mobile,Customization,Multiplatform,Xamarin.forms.shell,我正在开发一个复杂的应用程序,并利用Xamarin.Forms.Shell的优点进行布局和导航。现在有一些恼人的事情我还没有找到解决办法 应用程序本身及其内容是德语。是否有一种干净的方法将硬编码的“更多”选项卡文本更改为德语翻译(“Mehr”) 尽管“更多”选项卡相当不错,但它不适合我对应用程序布局的需求。当按下它时,我想显示一个视图,其中包含的不仅仅是带有标签的图标列表。我想将视图划分为带有标题的部分,在这些标题中,我想显示该部分的连贯页面。最简单的方法是用一个单页选项卡替换多页的“更多选项卡

我正在开发一个复杂的应用程序,并利用Xamarin.Forms.Shell的优点进行布局和导航。现在有一些恼人的事情我还没有找到解决办法

应用程序本身及其内容是德语。是否有一种干净的方法将硬编码的“更多”选项卡文本更改为德语翻译(“Mehr”)

尽管“更多”选项卡相当不错,但它不适合我对应用程序布局的需求。当按下它时,我想显示一个视图,其中包含的不仅仅是带有标签的图标列表。我想将视图划分为带有标题的部分,在这些标题中,我想显示该部分的连贯页面。最简单的方法是用一个单页选项卡替换多页的“更多选项卡”,然后按照描述设计页面,但是我喜欢更多选项卡的菜单外观,如果可能的话,我希望保留它

提前感谢您的帮助或建议。

您可以自定义来修改更多选项卡的
文本

Android解决方案中的
CustomShellRenderer.cs

public class CustomShellRenderer : ShellRenderer
{
    public CustomShellRenderer(Context context) : base(context)
    {

    }

    protected override IShellBottomNavViewAppearanceTracker CreateBottomNavViewAppearanceTracker(ShellItem shellItem)
    {
        return new MarginedTabBarAppearance();
    }
}

public class MarginedTabBarAppearance : IShellBottomNavViewAppearanceTracker
{
    public void Dispose()
    {
    }

    public void ResetAppearance(BottomNavigationView bottomView)
    {
    }

    public void SetAppearance(BottomNavigationView bottomView, ShellAppearance appearance)
    {
    }

    public void SetAppearance(BottomNavigationView bottomView, IShellAppearanceElement appearance)
    {
        if(null != bottomView.Menu.GetItem(4))
        {
            IMenuItem menuItem = bottomView.Menu.GetItem(4);
            menuItem.SetTitle(Resource.String.More);
        }
    }
}
public class CustomShellRenderer: ShellRenderer
{
    protected override IShellTabBarAppearanceTracker CreateTabBarAppearanceTracker()
    {
        return new TabBarAppearance();
    }
}

public class TabBarAppearance : IShellTabBarAppearanceTracker
{
    public void Dispose()
    {
    }

    public void ResetAppearance(UITabBarController controller)
    {
    }

    public void SetAppearance(UITabBarController controller, ShellAppearance appearance)
    {
    }

    public void UpdateLayout(UITabBarController controller)
    {
        UITabBar tb = controller.MoreNavigationController.TabBarController.TabBar;
        if (tb.Subviews.Length > 4)
        {
            UIView tbb = tb.Subviews[4];
            UILabel label = (UILabel)tbb.Subviews[1];
            label.Text = "Mehr";
        }
    }
}
字符串.xml

<?xml version="1.0" encoding="utf-8" ?>
<resources>
  <string name="More">Mehr</string>
</resources>
其效果是:


上面的代码基于。

您好,您是否使用Xamarin forms shell作为根布局?你可以在那里共享Xaml代码,我会检查一下。是的-我使用ShellPage类型的页面作为根页面。好的,你说“按下它时,我想显示一个视图,其中包含的不仅仅是带有标签的图标列表”是什么意思,你能分享一张图片来解释这种效果吗?@JuniorJiang MSFT-Shure-应该是这样的:非常感谢!这应该就够了。@Itsamystery很高兴它能起作用,如果回答有帮助,请不要忘记接受它作为答案(单击✔ 在这个答案的左上角)并投票,它将帮助其他有类似问题的人。我将检查共享的图像,如果好的想法将在这里更新。