如何在Xamarin.Forms中隐藏Android ActionBar?

7

我该如何在Xamarin.Forms中隐藏ActivityActionBar?我尝试了以下方法,但都没有成功:

  • OnCreate()中调用ActionBar.Hide()
  • 将主题设置为"@android:style/Theme.Holo.Light.NoActionBar"

你是否想要在某些页面上隐藏 ActionBar,但在其他页面上不隐藏?另外,你是只使用 Xamarin.Forms Navigation 吗?还是有混合 Activity / AndroidActivity?如果你能打包一个小的演示版来说明你的问题,我会进一步查看。我的联系方式在我的个人资料中。 - Pete
我只有一个单独的AndroidActivity,没有其他的。 - kaolick
1
你尝试过 James 在 这个 链接中提供的解决方案吗?此外,Allister 的一个答案建议将大小设置为 0? - Pete
刚找到了它。运行得非常好。 - kaolick
4个回答

12

你可以将它隐藏在你的构造函数中

public partial class MyPage : ContentPage
{
    public MyPage()
    {
        NavigationPage.SetHasNavigationBar(this, false);
        InitializeComponent();            
    }        
}

1
这是最好的答案,如果您需要显示/隐藏ActionBar,随时都可以调用它。 - Poppyto

4

刚刚发现了与@Pete平行的解决方案。目前看来,这是一个Xamarin.Forms下的错误。

我在我的Styles.xml中添加了以下内容,并将主题设置为我的Activity

<?xml version="1.0" encoding="UTF-8" ?>
<resources> 
    <style name="NoActionBarTheme" parent="android:Theme.Holo.Light">
        <item name="android:actionBarStyle">@style/invisible_action_bar_style</item>
    </style>
    <style name="invisible_action_bar_style" parent="android:Widget.Holo.ActionBar">
        <item name="android:height">0dp</item>
    </style>

</resources>

1

使用Xamarin.Forms隐藏ActionBar的更好方法:

global::Xamarin.Forms.Forms.SetTitleBarVisibility(Xamarin.Forms.AndroidTitleBarVisibility.Never);

0

这个简单的修复方法对我很有效。将你的Styles.xml文件顶部的那一行改为以下内容:

<style name="AppTheme" parent="Theme.MaterialComponents.Light.NoActionBar">

要替换看起来像这样的行:

<style name="AppTheme" parent="Theme.MaterialComponents.Light.DarkActionBar">

你只需要在ActionBar前面把单词“Dark”改成“No”即可。 搜索“Theme.MaterialComponents”以获取可以使用的材料组件列表。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接