如何永久禁用操作栏


137

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

getActionBar().hide();

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


2
找到答案HHH <活动机器人:主题= “@机器人:风格/ Theme.NoTitleBar.Fullscreen” ....>
哔叽

1
而不是操作栏,当您尝试复制时,请粘贴其默认视图。
Padma Kumar

是的,但是复制粘贴结束后,它仍然没有消失
Biji

getSupportActionBar()。hide();
阿米亚·萨拉格

Answers:


251

如果Theme.Holo.LightTheme.Holo.Light.NoActionBar在3.2之前的设备上使用并希望使用此变体,则可以将其添加到您的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" ... />

8
这是正确的答案。不会像@Biji的解决方案那样删除自定义主题。
phreakhead

1
知道隐藏通知栏会设置什么附加标志吗?
jesses.co.tt 2014年

1
我还发现有必要继承FragmentActivity而不是ActionBarActivity。
Meanman

4
@ jesses.co.tt可以使用<item name="android:windowFullscreen">true</item>
Mike Baxter

这对我不起作用。使用下列内容:stackoverflow.com/questions/29790070/...
克里斯托弗·斯密特

116

通过在清单中设置活动主题,

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

这似乎是唯一可行的方法。尤其是 如果您碰巧在底部有一个相对
布局

1
不幸的是,这是我上班的唯一途径。它删除了自定义主题,但ActionBar对我来说,这确实是唯一完全删除了的东西。
RileyE

3
这与新ADT中AppCompat主题的实施不兼容。我不认为要与之抗争-尝试完全摆脱AppCompat也是一个好的解决方案!我已经尝试@ monchote的方法,它为我的作品
ericn

这应该是<activity android:theme =“ @ android:style / Theme.NoTitleBar”>而不是<activity android:theme =“ @ android:style / Theme.NoTitleBar.Fullscreen”>
Amandeep Rohila 2015年

在三星Galaxy J2它使应用程序崩溃,但在Nexus 9没有问题
碎瓷多加


30
<application
    .
    .
    android:theme="@android:style/Theme.Holo.Light.NoActionBar"
    . >

也许这对你有帮助


3
注意,该方法需要API级别13的mnimum
Olumide

23

使用Android Studio默认生成的Activity超类为ActionBarActivity,然后其他响应中的任何解决方案均无效。要解决只是更改超类:

public class xxxActivity extends ActionBarActivity{

至:

public class xxxActivity extends Activity {

这为我做到了。谢谢你的帮助。
j_fulch 2014年

17

如果要全屏显示而没有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" 

12

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

this.requestWindowFeature(Window.FEATURE_NO_TITLE);

它总是为我工作。这种方法的唯一问题是,启动应用程序(不是活动,是完整的应用程序)时,您会看到动作栏仅几分之一秒。



12

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

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


7

如果您只想要没有操作栏的主题,则可以使用'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主题中显式添加它们:)


6

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

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

为您的活动设置该主题:

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

在您的活动课中。

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


6

res-> values-> styles.xml下

更改

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

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


5

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

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

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

3

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

  1. 打开app / res / values / styles.xml。
  2. 查找名为“ apptheme”的样式元素。应该看起来类似<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
  3. 现在,将父项替换为名称中包含“ NoActionBar”的任何其他主题。

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

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


3

将此代码键入您的onCreate方法之前setContentView

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

3

我想为此发布一个Designer方法,这将使设计与您的业务逻辑分离:

步骤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">

经过很多尝试后,这对我来说是最好的解决方案。


2

在onCreate函数中添加以下代码

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

然后只导入android.support.v7.app.ActionBar


2

确保通过将styles.xml文件中默认主题的名称更改为以下内容来创建新主题:

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

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


1

您想要在移除操作栏的同时保留ViewPager的另一种有趣的解决方案是,将样式设置为show

<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


此解决方案在顶部留有白色区域。
Felipe FMMobile 2014年

如果我将NoActionBarStyle父级更改为@ style / Widget.AppCompat.ActionBar.TabBar(我使用的是ViewPager),则可以在Android 2.3上使用Theme.AppCompat.Light(我使用的是ViewPager)
TouchBoarder 2014年

1

试试你的manifist

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

1
  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);

1

ActionBar在Android中有两种禁用方法。

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

1

styles.xml文件中使用:


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

0

我使用以下解决方案:

在清单中的活动标签内:

android:label="@string/empty_string"

并在strings.xml中:

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

这样,您可以将ActionBar(或Toolbar)保留为标题,但是如果创建了Activity,则标题将自动为空。


0

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

android:theme =“ @ style / AppTheme”

在application元素中,而不在activity元素中。如果我删除了上面的代码或试图将其更改为:

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文件。


0

在中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"
.......    
">

有时,当您看到类似这样的内容时,请单击此处,您可以从此处选择“ noActionBar”主题。

希望我能帮到你。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.