【问题标题】:How to disable action bar permanently如何永久禁用操作栏
【发布时间】:2011-12-10 13:31:20
【问题描述】:

我可以使用以下代码隐藏蜂窝中的操作栏:

getActionBar().hide();

但是当键盘打开并且用户复制粘贴任何内容时,操作栏会再次显示。 如何永久禁用操作栏?

【问题讨论】:

  • 找到答案hhh
  • 当您尝试复制时不是操作栏,粘贴其默认视图。
  • 是的,但是复制粘贴结束后,它仍然没有消失
  • getSupportActionBar().hide();

标签: android android-actionbar


【解决方案1】:

如果您正在使用 Theme.Holo.Light 并希望在 3.2 之前的设备上使用 Theme.Holo.Light.NoActionBar 变体,您可以将其添加到您的 styles.xml

<style name="NoActionBar" parent="@android:style/Theme.Holo.Light">
    <item name="android:windowActionBar">false</item>
    <item name="android:windowNoTitle">true</item>
</style> 

然后将其设置为您的活动主题:

<activity android:theme="@style/NoActionBar" ... />

【讨论】:

  • 这是正确答案。不会像@Biji 的解决方案那样删除自定义主题。
  • 知道设置隐藏通知栏的附加标志是什么吗?
  • 我还发现有必要继承 FragmentActivity 而不是 ActionBarActivity。
  • @jesses.co.tt 可以使用&lt;item name="android:windowFullscreen"&gt;true&lt;/item&gt;删除通知栏
  • 这对我不起作用。使用以下内容:stackoverflow.com/questions/29790070/…
【解决方案2】:

通过在 Manifest 中设置活动主题,

<activity
android:theme="@android:style/Theme.NoTitleBar.Fullscreen"
....
>

【讨论】:

  • 这似乎是唯一正确的方法。尤其是如果你碰巧在底部有一个相对布局......
  • 不幸的是,这是我上班的唯一途径。它删除了自定义主题,但对我来说,它确实是唯一完全删除 ActionBar 的东西。
  • 这不适用于在新 ADT 中强制执行 AppCompat 主题。我不认为与此作斗争 - 尝试完全摆脱 AppCompat 也是一个很好的解决方案!我尝试了@monchote 的方法,它对我有用
  • 这应该是 而不是
  • 在三星 Galaxy J2 上会导致应用崩溃,但在 Nexus 9 上没有问题
【解决方案3】:

我在 onCreate 函数中使用以下代码:

ActionBar actionBar = getSupportActionBar();
actionBar.hide();

来源: https://developer.android.com/guide/topics/ui/actionbar.html

【讨论】:

【解决方案4】:
<application
    .
    .
    android:theme="@android:style/Theme.Holo.Light.NoActionBar"
    . >

也许对你有帮助

【讨论】:

  • 请注意,此方法至少需要 api 级别 13
【解决方案5】:

使用 Android Studio 默认生成的 Activity 超类是 ActionBarActivity,然后,其他响应中的任何解决方案都不起作用。要解决只需更改超类:

public class xxxActivity extends ActionBarActivity{

到:

public class xxxActivity extends Activity {

【讨论】:

  • 这是为我做的。感谢您的帮助。
【解决方案6】:

如果你想在没有 actionBar 和 Title 的情况下获得全屏。

在 style.xml 中添加

<style name="AppTheme.NoActionBar" parent="Theme.AppCompat.Light.DarkActionBar">
      <item name="windowActionBar">false</item>
      <item name="windowNoTitle">true</item>
      <item name="android:windowFullscreen">true</item>
</style>

并使用 manifest.xml 中的样式。

android:theme="@style/AppTheme.NoActionBar" 

【讨论】:

    【解决方案7】:

    转到styles.xml 将此 DarkActionBar 更改为 NoActionBar

    style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
    

    【讨论】:

      【解决方案8】:
      protected void onCreate(Bundle savedInstanceState) {
          super.onCreate(savedInstanceState);
          setContentView(R.layout.activity_my);
          getSupportActionBar().hide();
      }
      

      【讨论】:

        【解决方案9】:

        我发现提供自定义主题且没有操作栏的最佳方法是为我的项目中的所有活动创建一个 SuperClass,并在它的 onCreate() 中调用以下代码行 -

        this.requestWindowFeature(Window.FEATURE_NO_TITLE);
        

        它总是对我有用。这种方法的唯一问题是,在启动应用程序时,您会在几分之一秒内看到操作栏(不是 Activity,而是完整的应用程序)。

        【讨论】:

          【解决方案10】:

          您可以简单地强制隐藏操作栏:

          ActionBar  actionbar = getSupportActionBar();
          actionbar.hide();
          

          只要使用你的默认主题,如果设置全屏就可以了

          【讨论】:

            【解决方案11】:

            不要使用 Holo 主题,Actionbar 会消失。 这段代码在 API 8+ 上为我工作,支持 lib v7:

            <style name="NoActionBar" parent="@style/Theme.AppCompat.Light">
            <item name="android:windowNoTitle">true</item>
            </style>
            

            为您的活动设置主题:

            <activity android:theme="@style/NoActionBar" ... />
            

            在你的活动课上。

            即使它扩展了 ActionBarActivity,它也可以工作。

            【讨论】:

              【解决方案12】:

              如果您只想要一个没有操作栏的主题,您可以使用“NoActionBar”变体,例如。如果您的基本主题如下

              <!-- Base application theme. -->
              <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
                  <item name="colorPrimary">@color/colorPrimary</item>
                  <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
                  <item name="colorAccent">@color/colorAccent</item>
              </style>
              

              那么你可以使用

              <style name="AppThemeNoActionBar" parent="Theme.AppCompat.Light.NoActionBar">
                  <item name="colorPrimary">@color/colorPrimary</item>
                  <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
                  <item name="colorAccent">@color/colorAccent</item>
              </style>
              

              但如果您想保留主主题的属性,即 AppTheme,您可以执行以下操作

              <style name="AppThemeNoActionBar" parent="AppTheme">
                  <item name="windowActionBar">false</item>
                  <item name="windowNoTitle">true</item>
              </style>
              

              您可以通过这种方式保留基本主题的所有属性,而不必在 NoActionBar 主题中显式添加它们:)

              【讨论】:

                【解决方案13】:

                res -> values ->styles.xml

                改变

                &lt;style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar"&gt;

                &lt;style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar"&gt;

                【讨论】:

                  【解决方案14】:

                  这是一个快速的解决方案。

                  您找到 styles.xml 并将基本应用程序主题更改为“Theme.AppCompat.NoActionBar”,如下所示。

                  <style name="AppTheme" parent="Theme.AppCompat.NoActionBar">
                      <!-- Customize your theme here. -->
                  </style>
                  

                  【讨论】:

                    【解决方案15】:

                    setContentView 之前将此代码输入到您的onCreate 方法中:

                    requestWindowFeature(Window.FEATURE_NO_TITLE);
                    getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, 0);
                    

                    【讨论】:

                      【解决方案16】:

                      以下是永久隐藏操作栏的步骤:

                      1. 打开 app/res/values/styles.xml。
                      2. 查找名为“apptheme”的样式元素。应该看 类似于&lt;style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar"&gt;
                      3. 现在将父主题替换为包含 “NoActionBar”的名字。

                        一个。您还可以通过切换到 activity_main.xml 的设计选项卡,然后尝试 UI 的主题下拉列表中提供的每个主题来检查主题的外观。

                      4. 如果您的 MainActivity 扩展了 AppCompatActivity,请确保 您使用 AppCompat 主题。

                      【讨论】:

                        【解决方案17】:

                        我想发布一个设计器方法来解决这个问题,这将使设计与您的业务逻辑分开:

                        步骤 1. 在 (res->values->styles.xml) 中创建新样式:基本上它是您的整体方案与不同父级的副本 - parent="Theme.AppCompat.Light.NoActionBar"

                        <!-- custom application theme. -->
                            <style name="MarkitTheme" parent="Theme.AppCompat.Light.NoActionBar">
                                <!-- Customize your theme here. -->
                                <item name="colorPrimary">@color/colorPrimary</item>
                                <item name="colorPrimaryDark">@color/colorPrimary</item>
                                <item name="colorAccent">@color/colorAccent</item>
                        
                                <item name="android:windowNoTitle">true</item>
                            </style>
                        

                        第 2 步:在您的 AndroidManifest.xml 中,将此主题添加到您想要的活动中:例如我希望我的主要活动没有操作栏,所以添加如下:

                        <activity android:name=".MainActivity"
                                    android:theme="@style/MarkitTheme">
                        

                        这是我尝试了很多东西后最好的解决方案。

                        【讨论】:

                          【解决方案18】:

                          在onCreate函数中添加如下代码

                          ActionBar actionBar = getSupportActionBar();
                          actionBar.hide();
                          

                          只需导入 android.support.v7.app.ActionBar

                          【讨论】:

                            【解决方案19】:

                            确保通过将styles.xml 文件中的默认主题名称更改为:

                             <style name="MyTheme" parent="android:Theme.Material.Light.NoActionBar">
                            

                            然后将主题从main_activity.xml 下的下拉菜单更改为您所称的主题。

                            【讨论】:

                              【解决方案20】:

                              styles.xml 文件中使用这个:

                              
                              <style name="MyTheme" parent="@style/Theme.AppCompat.Light.NoActionBar">
                                      <item name="android:windowActionBar">false</item>
                                      <item name="android:windowNoTitle">true</item>
                              

                              【讨论】:

                                【解决方案21】:

                                另一个有趣的解决方案是在删除操作栏的同时保留 ViewPager 是显示样式

                                <style name="AppTheme" parent="AppBaseTheme">
                                    <item name="android:windowActionBarOverlay">true</item>
                                    <item name="android:actionBarStyle">@style/NoActionBarStyle</item>
                                    <item name="android:windowContentOverlay">@null</item>
                                </style>
                                <style name="NoActionBarStyle" parent="android:Widget.Holo.ActionBar">
                                    <item name="android:backgroundSplit">@null</item>
                                    <item name="android:displayOptions"></item>
                                </style>
                                

                                这是大多数 android 中的 Dialer 应用程序在没有操作栏的情况下显示 ViewPager 的方式。

                                参考:https://github.com/CyanogenMod/android_packages_apps_Dialer

                                【讨论】:

                                • 这个解决方案在顶部留下一个白色区域。
                                • 如果我将 NoActionBarStyle 父级更改为 @style/Widget.AppCompat.ActionBar.TabBar(我正在使用 ViewPager),这对我在 Android 2.3 上使用 Theme.AppCompat.Light 有效
                                【解决方案22】:

                                在你的清单中试试这个

                                 <activity
                                        android:name=".MainActivity"
                                        android:theme="@android:style/Theme.Holo.NoActionBar"
                                        android:label="@string/app_name" >
                                

                                【讨论】:

                                  【解决方案23】:
                                    protected void onCreate(Bundle savedInstanceState) {
                                     super.onCreate(savedInstanceState);
                                     android.support.v7.app.ActionBar actionBar = getSupportActionBar();
                                      if (actionBar != null) {
                                          actionBar.hide();
                                      }
                                      setContentView(R.layout.activity_main);
                                  

                                  【讨论】:

                                    【解决方案24】:

                                    有两种方法可以在 Android 中禁用 ActionBar

                                    requestWindowFeature(Window.FEATURE_NO_TITLE); 
                                    setContentView(R.layout.activity_main); 
                                    

                                    【讨论】:

                                      【解决方案25】:

                                      我使用这个解决方案:

                                      在清单中,在您的活动标签内:

                                      android:label="@string/empty_string"
                                      

                                      在strings.xml中:

                                      <string name="empty_string">""</string>
                                      

                                      这样你就可以将 ActionBar(或 Toolbar)与标题保持一致,但是当 Activity 创建时,标题会自动为空。

                                      【讨论】:

                                        【解决方案26】:

                                        奇怪的是,在运行 4.4.2 (API 19) 的 Nexus 7 上构建时,这些都不适合我。在大多数情况下,至少使用最新版本的 Android Studio (1.2.1.1) 在创建空白活动应用程序后:

                                        android:theme="@style/AppTheme"

                                        在应用程序元素中,而不是在活动元素中。如果我删除了上述代码或尝试将其更改为:

                                        android:theme="@android:style/Theme.Holo.Light.NoActionBar"

                                        应用程序将无法运行...如果您遇到这种情况,只需进入您的 styles.xml 文件(res > values > styles.xml)并将 .NoTitleBar 添加到父级的末尾,就像这个块一样:

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

                                        无需更改 AndroidManifest 文件。

                                        【讨论】:

                                          【解决方案27】:

                                          在你的activity_main.xml,你可以从那里调整 在行中:

                                          <?xml version="1.0" encoding="utf-8"?>
                                          <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
                                          .......
                                              android:theme="@style/Theme.Design.Light.NoActionBar"
                                          .......    
                                          ">
                                          

                                          有时你可以看到Click here这样的东西,你可以从这里选择“noActionBar”主题。

                                          希望我能帮到你。

                                          【讨论】:

                                            【解决方案28】:

                                            一些答案​​已经写好了,如果你在res&gt;values 中没有找到styles.xml 文件,那么你可以这样做去res&gt;values&gt;themes&gt;themes.xml 这里你需要在样式中添加这两行

                                             <item name="android:windowFullscreen">true</item>
                                             <item name="windowNoTitle">true</item>
                                            

                                            【讨论】:

                                              【解决方案29】:

                                              Theme.xml 文件

                                               <style name="Theme.FurnitureApp.NoActionBar">
                                                      <item name="windowActionBar">false</item>
                                                      <item name="windowNoTitle">true</item>
                                                      <item name="android:windowFullscreen">true</item>
                                                  </style>
                                              

                                              在 setContent{ } 方法之前编写以下代码

                                              requestWindowFeature(Window.FEATURE_NO_TITLE);
                                                      window.setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, 0)
                                              

                                              【讨论】:

                                                猜你喜欢
                                                • 2019-02-22
                                                • 2012-04-09
                                                • 1970-01-01
                                                • 1970-01-01
                                                • 2019-04-05
                                                • 1970-01-01
                                                • 1970-01-01
                                                • 1970-01-01
                                                • 2017-11-22
                                                相关资源
                                                最近更新 更多