【问题标题】:How Can we hide title bar while using action bar?使用操作栏时如何隐藏标题栏?
【发布时间】:2012-11-11 10:42:51
【问题描述】:

我正在使用 ActionBarSherlock 并试图隐藏我的应用程序的标题栏,但每当我这样做时,我在访问 ActionBar 时会收到一个 NullPointerException 如何删除/隐藏标题栏?请注意,我指的不是操作栏的标题。我指的是操作栏上方的标题栏。我在 Android 2.3 设备上运行我的应用程序。

以下是我的代码:(我的课程扩展了SherlockFragmentActivity。)

super.onCreate(savedInstanceState);
setTheme(R.style.Theme_Sherlock);
this.requestWindowFeature(Window.FEATURE_NO_TITLE);
ActionBar actionbar = getSupportActionBar();
actionbar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS); //I get the NullPointerException here.

//...

setContentView(R.layout.tab_navigation);

【问题讨论】:

标签: android android-actionbar actionbarsherlock titlebar


【解决方案1】:

我通过添加以下代码行来隐藏标题栏:

getSupportActionBar().setDisplayShowTitleEnabled(false);
getSupportActionBar().setDisplayShowHomeEnabled(false);

希望这会有所帮助:)

【讨论】:

  • 该类型的getSupportActionBar()方法未定义
  • @Azahar 如果你不使用支持库,你应该使用 getActionBar()
【解决方案2】:

要隐藏所有标题栏并只保留操作栏,请使用以下代码:

final ActionBar actionBar = getActionBar();
actionBar.setDisplayShowHomeEnabled(false);
actionBar.setDisplayShowTitleEnabled(false);
actionBar.setDisplayUseLogoEnabled(false);

对我有用

【讨论】:

  • 如果您使用菜单布局,请在 menu.xml 中将它们设置为 android:showAsAction="never"
【解决方案3】:

我正在为此寻找答案。找到了一种解决方案。

actionBar = getActionBar();
actionBar.hide();

上面的 sn -p 将删除标签标题和滑块。希望对您有所帮助。

【讨论】:

    【解决方案4】:

    在这个问题上找到了解决方案。如果您在AndroidManifest.xml 上声明您的主题,标题栏将自行消失。虽然,我不明白为什么它只在 AndroidManifest.xml 上声明而不是在代码上声明时才有效。

    NullPointerException 的原因是ActionBar 与更高版本(ICS 和更新版本)上的TitleBar 同义。通过使用兼容性库和ActionBarSherlock,隐藏TitleBar也意味着隐藏ActionBar

    以下是如何设置应用程序以使用 Sherlock 的主题:(您应该将其添加到应用程序的标签上)

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

    如果您知道如何隐藏代码上的标题栏,请随时修改我的答案以包含您的答案。如果有人能解释为什么它只适用于清单文件而不适用于代码,那就太好了。 :)

    【讨论】:

    • 代码与清单问题的解释在我的answer
    【解决方案5】:

    查看此答案以在 ActionBarSherlock 中以语法方式显示/隐藏 titleBar ..

    android: title bar hide

    【讨论】:

      【解决方案6】:

      Arci 的回答并不完全正确。如果你阅读Theming documentation,你会发现:

      应在清单中为整个应用程序或基于每个活动定义主题。您还可以在调用super.onCreate(Bundle) 之前 在每个活动的代码中定义主题。对于您从“Sherlock”活动基类之一扩展并打算使用操作栏的每个活动,都必须执行此操作。

      换句话说,交换原始代码的前两行就足够了:

      setTheme(R.style.Theme_Sherlock);
      super.onCreate(savedInstanceState);
      ...
      

      【讨论】:

        【解决方案7】:

        我遇到了同样的问题。这些答案都不适合我,我仍然可以看到标题栏在加载操作栏之前显示。

        我必须在 Manifest 中将 Activity 主题设置为 NoActionBar:

        android:theme="@style/Theme.Sherlock.NoActionBar"
        

        然后在 setContentView() 之前将主题设置回我的 Activity 中:

        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
        
            setTheme(R.style.Theme_Custom);
            setContentView(R.layout.activity_home);
        }
        

        这仍然加载了我的自定义主题,并且在加载活动时我不再看到标题栏

        【讨论】:

          【解决方案8】:

          如果您使用的是 Xamarin。您可以在下面使用。

          ActionBar.Hide();
          

          【讨论】:

            【解决方案9】:

            试试看:

            setTheme(R.style.Theme_Sherlock_NoActionBar);
            

            【讨论】:

              【解决方案10】:
                  <activity android:name=".xxxxxActivity"
                            android:theme="@style/Theme.Sherlock.NoActionBar"/>
              

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 2014-03-18
                • 1970-01-01
                • 1970-01-01
                相关资源
                最近更新 更多