【问题标题】:Hide BottomNavigationView on Navigation in Xamarin.Forms (Android Only)在 Xamarin.Forms 中的导航上隐藏 BottomNavigationView(仅限 Android)
【发布时间】:2019-03-20 20:14:06
【问题描述】:

我正在使用新的 Xamarin.Forms 功能使用以下属性将 Tabbar 设置在 Android 的底部

xmlns:android="clr-namespace:Xamarin.Forms.PlatformConfiguration.AndroidSpecific;assembly=Xamarin.Forms.Core" android:TabbedPage.ToolbarPlacement="底部"

导航到其他页面时,我需要隐藏标签栏。我编写了一个继承自 TabbedPageRenderer 的自定义渲染器,但我无法使用 OnElementChanged 获取 BottomNavigationView 的实例。

【问题讨论】:

    标签: android xamarin.forms tabbar bottomnavigationview


    【解决方案1】:

    虽然有可能,但根据this thread,Apple 不建议在导航页面内设置选项卡式页面。

    更好的解决方案是在 TabbedPage 上打开一个模式页面。我想模态页面可以是 NavigationPage,但我没有尝试过。

    【讨论】:

    • 我使用了这种方法,效果很好,只是模型过渡看起来有点不合时宜,不像导航过渡。
    【解决方案2】:

    理想情况下,您应该将 TabbedPage 保留在 NavigationPage 中,并将新页面推送到 TabbedPage 之上。

    您无法获取 BottomNavigationView 引用,因为它是 private field。不过,您可以使用反射来设置它的值,我强烈建议不要这样做。

    var info = typeof(TabbedPageRenderer).GetTypeInfo();
    var _bottomNavigationView = (BottomNavigationView)info.GetField("_bottomNavigationView", BindingFlags.Instance | BindingFlags.NonPublic).GetValue(this);`
    

    【讨论】:

    • 代码可以工作,但不能调整底部空间。标签栏的补丁区域仍然存在。尝试了导航方法,但在这种情况下标签栏仍然可见。
    • 在 NavigationPage 中保留 TabbedPage 绝对有效,请发布代码以便更好地理解。另外,我完全同意@Tom,将 TabbedPage 保留在 NavigationPage 中是不好的设计,只有在没有其他方法的情况下才使用它
    猜你喜欢
    • 2016-12-23
    • 1970-01-01
    • 1970-01-01
    • 2019-06-02
    • 1970-01-01
    • 2021-07-25
    • 2016-08-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多