在 Xamarin.Forms 中的导航中隐藏 BottomNavigationView(仅限 Android)
Hide BottomNavigationView on Navigation in Xamarin.Forms (Android Only)
我正在使用新的 Xamarin.Forms 功能通过以下属性为 Android 设置底部的标签栏
xmlns:android="clr-namespace:Xamarin.Forms.PlatformConfiguration.AndroidSpecific;assembly=Xamarin.Forms.Core"
android:TabbedPage.ToolbarPlacement="Bottom"
我需要在导航到其他页面时隐藏标签栏。我已经编写了一个继承自 TabbedPageRenderer 的自定义渲染器,但我无法使用 OnElementChanged 获取 BottomNavigationView 的实例。
理想情况下,您应该将 TabbedPage 保留在 NavigationPage 中,并将新页面推送到 TabbedPage 之上。
您无法获取 BottomNavigationView 引用,因为它是 private field。虽然,您可以使用反射来设置它的值,但我强烈建议不要这样做。
var info = typeof(TabbedPageRenderer).GetTypeInfo();
var _bottomNavigationView = (BottomNavigationView)info.GetField("_bottomNavigationView", BindingFlags.Instance | BindingFlags.NonPublic).GetValue(this);`
虽然可以,但根据 this thread,Apple 不推荐在导航页面内设置选项卡式页面。
更好的解决方案是在 TabbedPage 上打开模式页面。我想模态页面可以是 NavigationPage,但我还没有尝试过。
我正在使用新的 Xamarin.Forms 功能通过以下属性为 Android 设置底部的标签栏
xmlns:android="clr-namespace:Xamarin.Forms.PlatformConfiguration.AndroidSpecific;assembly=Xamarin.Forms.Core" android:TabbedPage.ToolbarPlacement="Bottom"
我需要在导航到其他页面时隐藏标签栏。我已经编写了一个继承自 TabbedPageRenderer 的自定义渲染器,但我无法使用 OnElementChanged 获取 BottomNavigationView 的实例。
理想情况下,您应该将 TabbedPage 保留在 NavigationPage 中,并将新页面推送到 TabbedPage 之上。
您无法获取 BottomNavigationView 引用,因为它是 private field。虽然,您可以使用反射来设置它的值,但我强烈建议不要这样做。
var info = typeof(TabbedPageRenderer).GetTypeInfo();
var _bottomNavigationView = (BottomNavigationView)info.GetField("_bottomNavigationView", BindingFlags.Instance | BindingFlags.NonPublic).GetValue(this);`
虽然可以,但根据 this thread,Apple 不推荐在导航页面内设置选项卡式页面。
更好的解决方案是在 TabbedPage 上打开模式页面。我想模态页面可以是 NavigationPage,但我还没有尝试过。