XAML 如何在Xamarin.Forms中删除(Android)应用程序标题栏?

whitzsjs  于 2022-12-07  发布在  Android
关注(0)|答案(8)|浏览(299)

有没有可能我可以删除Xamarin.Forms中应用程序的标题栏?我正在开发Xamarin.Forms Portable项目。我尝试了很多解决方案,但都不起作用,我甚至无法启动应用程序。

第一次尝试我尝试将其添加到我的AndroidManifest.xml,但没有成功:

android:theme="@android:style/Theme.NoTitleBar"

第二次尝试我尝试在Resources/values中创建一个styles.xml,结果是:

<?xml version="1.0" encoding="utf-8" ?>
<resources xmlns:android="http://schemas.android.com/apk/res/android">
  <style name="Theme.Default" parent="@android:style/Theme"></style>
  <style name="Theme.NoTitle" parent="@android:style/Theme.NoTitleBar"></style>
  <style name="Theme.FullScreen" parent="@android:style/Theme.NoTitleBar.Fullscreen"></style>
</resources>

然后我把这个添加到我的AndroidManifest.xml中(也不起作用)

android:theme="@style/Theme.NoTitle"

第三次尝试我尝试将此方法添加到MainActivity.cs中的OnCreate方法中(没有成功)。

RequestWindowFeature(WindowFeatures.NoTitle);

有人能帮我吗?

xhv8bpkk

xhv8bpkk1#

如果要删除初始页上的标题栏,最快、最简单的方法是转到该页的XAML中的内容页标题,然后键入

导航页面.具有导航栏=“False”

所以XAML会像这样

<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             x:Class="YourClass.YourPage"
             NavigationPage.HasNavigationBar="False">
von4xj4u

von4xj4u2#

这可以在PCL中完成:

var page = new LoginPage();
 NavigationPage.SetHasNavigationBar(page, false); // call this method every time before you push a page (no title bar)
 await navigation.PushAsync(page);

如果您正在使用旧的FormsApplicationActivity,请尝试在OnCreate(Bundle bundle)方法中添加此

protected override void OnCreate(Bundle bundle)
{
    base.OnCreate(bundle)

    Forms.SetTitleBarVisibility(AndroidTitleBarVisibility.Never);
    Forms.Init(this, bundle);
}

这一个似乎做应用程序范围内的设置,但我不太确定,因为我不使用FormsApplicationActivity了。

noj0wjuj

noj0wjuj3#

使用最新版本的Xamarin.Forms时,我发现如果用途:

await Navigation.PushAsync(new NextPage())

//显示NextPage上的标题

await Navigation.PushModalAsync(new NextPage())

//不显示NextPage上的标题
纳丹

kpbpu008

kpbpu0084#

我以前遇到过这个问题,我的解决方案是将这行代码添加到MainPage.xamlNavigationPage.HasNavigationBar="False"

<?xml version="1.0" encoding="utf-8" ?>
<xf:BottomBarPage xmlns="http://xamarin.com/schemas/2014/forms"
                  xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
                  xmlns:xf="clr-namespace:BottomBar.XamarinForms;assembly=BottomBar.XamarinForms"
                  xmlns:local="clr-namespace:App;assembly=App"
                         NavigationPage.HasNavigationBar="False" <-- This line !-->
                  x:Class="App.MainPage">

“这对我很有效"

oogrdqng

oogrdqng5#

Theme = "@android:style/Theme.NoTitleBar"

using Android.App;
using Android.OS;
using Android.Webkit;
using Android.Views;  // Webkit required for WebView

namespace LoadWebPage {
    [Activity(Label = "LoadWebPage", MainLauncher = true, Icon = "@drawable/icon", Theme = "@android:style/Theme.NoTitleBar")]
    public class Activity1 : Activity {
        protected override void OnCreate (Bundle bundle)
tyu7yeag

tyu7yeag6#

对于iOS,这一行代码(例如,在页面的构造函数中)工作得很好。

NavigationPage.SetHasNavigationBar(page, false);

但是Android忽略了它,当放在页面的XAML中时也是如此。
正如上面Bonelol提到的,每次推送页面之前都必须调用这个方法。我使用Prism,所以我不能访问页面的创建和推送。所以我只是为NavigationPage创建了一个自定义渲染器,并在那里放置了这行代码。也许这会帮助其他人。

[assembly: ExportRenderer(typeof(NavigationPage), typeof(CustomNavigationRenderer))]
namespace MyApp.Droid.Renderer
{
    public class CustomNavigationRenderer : NavigationPageRenderer
    {
        public CustomNavigationRenderer(Context context) : base(context)
        {
        }

        protected override Task<bool> OnPushAsync(Page view, bool animated)
        {
            NavigationPage.SetHasNavigationBar(view, false);
            return base.OnPushAsync(view, animated);
        }                    
    }
}
8iwquhpp

8iwquhpp7#

试试这个:

private ActionBar ab;
 protected override void OnCreate(Bundle savedInstanceState)
    {
        try
        {
            base.OnCreate(savedInstanceState);
            ab = this.ActionBar;
            ab.Hide();
        }
         catch (Exception ex)
        {

        }
    }
4dbbbstv

4dbbbstv8#

试试这个,刚在弹出选项卡Shell.NavBarIsVisible="False"中的一个视图xaml中找到的
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms" xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" x:Class="YourClass.Views.YourPage" Shell.NavBarIsVisible="False">

相关问题