使用 Xamarin Forms,如何在不显示导航栏的情况下更改页面?

Jos*_*osh 5 mobile xamarin xamarin.forms

我想更改 Xamarin Forms 中的页面,为此我读到您需要使用 NavigationPage 作为根页面。我的问题是我无法摆脱顶部的导航栏。我尝试过使用 SetHasNavigationBar 但它似乎不起作用

public App ()
{
    NavigationPage mypage = new NavigationPage (new PageOne ());
    NavigationPage.SetHasNavigationBar (mypage, false);
    MainPage = mypage;
}
Run Code Online (Sandbox Code Playgroud)

结果:http ://i870.photobucket.com/albums/ab261/j0sht/prob_zps4bmxtyvb.png

从图中可以看到,顶部仍然有一个带有图标的栏

谢谢

cod*_*lla 5

我相信您必须在内部页面上调用 NavigationPage.SetHasNavigationBar (),而不是 NavigationPage (在您的情况下为 mypage)尝试执行以下操作:

var pageOne = new PageOne();
NavigationPage.SetHasNavigationBar (pageOne, false);
NavigationPage mypage = new NavigationPage (pageOne);
MainPage = mypage;
Run Code Online (Sandbox Code Playgroud)

编辑如何从 Android 上的加载屏幕中消除导航栏(基本上设置一个具有简单图像背景的虚拟启动页面,并在加载时重定向到您的真实主要活动(此时 Xamarin Forms 接管):

[Activity(MainLauncher = true, NoHistory = true, Theme = "@style/Theme.Splash",
ConfigurationChanges = ConfigChanges.ScreenSize | ConfigChanges.Orientation)]
public class SplashScreen : Activity
{
    protected override void OnCreate(Bundle bundle)
    {
        base.OnCreate(bundle);

        var intent = new Intent(this, typeof(MainActivity));
        StartActivity(intent);
    }
}
Run Code Online (Sandbox Code Playgroud)

以及启动画面的主题:

<style name="Theme.Splash" parent="android:Theme">
    <item name="android:windowBackground">@drawable/splashscreen</item>
    <item name="android:windowNoTitle">true</item>
    <item name="android:windowIsTranslucent">false</item>
    <item name="android:windowIsFloating">false</item>
    <item name="android:backgroundDimEnabled">true</item>
</style>
Run Code Online (Sandbox Code Playgroud)