如何永久禁用操作栏

时间:2011-12-10 13:31:20

标签: android android-actionbar

我可以使用以下代码隐藏动作栏:

getActionBar().hide();

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

28 个答案:

答案 0 :(得分:236)

如果您使用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" ... />

答案 1 :(得分:106)

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

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

答案 2 :(得分:30)

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

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

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

答案 3 :(得分:29)

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

也许这可以帮到你

答案 4 :(得分:23)

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

public class xxxActivity extends ActionBarActivity{

为:

public class xxxActivity extends Activity {

答案 5 :(得分:12)

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

this.requestWindowFeature(Window.FEATURE_NO_TITLE);

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

答案 6 :(得分:11)

如果你想在没有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 :(得分:10)

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_my);
    getSupportActionBar().hide();
}

答案 8 :(得分:9)

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

PHP file

答案 9 :(得分:6)

不要使用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,它也能正常工作。

答案 10 :(得分:5)

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

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

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

答案 11 :(得分:5)

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

<!-- 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主题中明确添加它们:)

答案 12 :(得分:4)

您可以强制隐藏操作栏:

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

只需使用默认主题。

答案 13 :(得分:3)

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

  1. 打开app / res / values / styles.xml。
  2. 查找名为&#34; apptheme&#34;的样式元素。应该看 类似于<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
  3. 现在将父级替换为包含的任何其他主题 &#34; NoActionBar&#34;以它的名字。

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

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

答案 14 :(得分:3)

我想发布一个设计师方法,这将使设计与您的业务逻辑分开:

步骤1.在(res-&gt; values-&gt; 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">

在尝试了很多事情后,这对我来说是最好的解决方案。

答案 15 :(得分:3)

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

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

答案 16 :(得分:3)

res - &gt;下值 - &gt; strings.xml

更改

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

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

答案 17 :(得分:2)

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

来创建新主题
 <style name="MyTheme" parent="android:Theme.Material.Light.NoActionBar">

然后将主题从main_activity.xml下的下拉列表更改为您所谓的主题。

答案 18 :(得分:1)

在onCreate函数中添加以下代码

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

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

答案 19 :(得分:1)

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

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

答案 20 :(得分:1)

在你的表现者中尝试这个

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

答案 21 :(得分: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);

答案 22 :(得分: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

答案 23 :(得分:0)

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

  

机器人:主题=&#34; @风格/ AppTheme&#34;

位于application元素中,而不是activity元素。如果我删除了上述代码或尝试将其更改为:

  

机器人:主题=&#34; @android:风格/ Theme.Holo.Light.NoActionBar&#34;

应用程序不会运行...如果发生这种情况,只需进入styles.xml文件(res&gt; values&gt; styles.xml)并将.NoTitleBar添加到结尾处。像这块一样的父母:

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

不需要更改AndroidManifest文件。

答案 24 :(得分:0)

我使用这个解决方案:

清单中的

,活动标记内:

android:label="@string/empty_string"

并在strings.xml中:

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

这样你就可以将ActionBar(或工具栏)保留为标题,但是如果创建了Activity,则标题会自动为空。

答案 25 :(得分: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"
.......    
">

有时您可以看到类似Click here这样的内容,您可以在此处选择“ noActionBar”主题。

希望我能帮助您

答案 26 :(得分:0)

styles.xml文件中使用它:


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

答案 27 :(得分:0)

一些答案​​已经写好了,如果您在 styles.xml 中没有找到 res>values 文件,那么您可以执行此操作,转到 res>values>themes>themes.xml 此处,您需要在样式中添加这两行

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