如何永久禁用操作栏
我可以用下面的代码隐藏蜂窝中的操作栏:
getActionBar().hide();
但是,当键盘打开,并且用户复制粘贴任何东西时,操作栏会再次显示。 我怎样才能永久禁用操作栏?
如果您使用的是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" ... />
通过在Manifest中设置活动主题,
<activity android:theme="@android:style/Theme.NoTitleBar.Fullscreen" .... >
<application . . android:theme="@android:style/Theme.Holo.Light.NoActionBar" . >
也许这对你有帮助
使用Android Studio默认生成的Activity超类是ActionBarActivity
,然后,其他响应中的解决scheme都ActionBarActivity
。 为了解决改变超类:
public class xxxActivity extends ActionBarActivity{
至:
public class xxxActivity extends Activity {
我在我的onCreate函数中使用下面的代码:
ActionBar actionBar = getSupportActionBar(); actionBar.hide();
来源: https : //developer.android.com/guide/topics/ui/actionbar.html
我find的最好的方法是给出自定义的主题和没有操作栏,是为我的项目中的所有活动创build一个SuperClass,并在它的onCreate()调用下面的代码行 –
this.requestWindowFeature(Window.FEATURE_NO_TITLE);
它总是为我工作。 这种方法唯一的问题是,在启动应用程序(不是活动,完整的应用程序)时,您会看到一小部分时间的操作栏。
protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_my); getSupportActionBar().hide(); }
如果你想获得全屏没有actionBar和标题。
将其添加到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"
不要使用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的时候也可以工作。
下面是一个快速解决scheme。
您可以findstyles.xml,并将基本应用程序主题更改为“Theme.AppCompat.NoActionBar”,如下所示。
<style name="AppTheme" parent="Theme.AppCompat.NoActionBar"> <!-- Customize your theme here. --> </style>
转到styles.xml将此DarkActionBar更改为NoActionBar
style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
在setContentView
之前将此代码键入到onCreate
方法中:
requestWindowFeature(Window.FEATURE_NO_TITLE); getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, 0);
确保通过更改styles.xml
文件中的默认主题的名称来创build新的主题:
<style name="MyTheme" parent="android:Theme.Material.Light.NoActionBar">
而不是将主题从main_activity.xml
的下拉列表更改为任何您称为主题的内容。
以下是永久隐藏操作栏的步骤:
- 打开app / res / values / styles.xml。
- 寻找名为“apptheme”的样式元素。 应该看起来类似于
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
。 -
现在用其名称中包含“NoActionBar”的任何其他主题replace父项。
一个。 您也可以通过切换到activity_main.xml的devise选项卡,然后尝试UI的主题下拉列表中提供的每个主题来检查主题的外观。
-
如果您的MainActivity扩展了AppCompatActivity ,请确保使用AppCompat主题。
另一个有趣的解决scheme,你想保留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中的拨号器应用程序显示没有操作栏的ViewPager。
参考: https : //github.com/CyanogenMod/android_packages_apps_Dialer
在onCreate函数中添加下面的代码
ActionBar actionBar = getSupportActionBar(); actionBar.hide();
并只需导入android.support.v7.app.ActionBar
在你的表演者身上试试这个
<activity android:name=".MainActivity" android:theme="@android:style/Theme.Holo.NoActionBar" android:label="@string/app_name" >
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);
有两种方法可以在Android中禁用ActionBar
。
requestWindowFeature(Window.FEATURE_NO_TITLE); setContentView(R.layout.activity_main);
我想发布一个devise师的方法,这将使devise与业务逻辑分开:
第1步。在(res-> values-> styles.xml)中创build新的样式:基本上它是你的整体scheme的副本,不同的父 – 父=“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">
在尝试了很多东西之后,这对我来说是最好的解决scheme。
您可以强制隐藏操作栏:
ActionBar actionbar = getSupportActionBar(); actionBar.hide();
只需使用您的默认主题。
我使用这个解决scheme:
在清单中,在您的活动标签内:
android:label="@string/empty_string"
并在strings.xml中:
<string name="empty_string">""</string>
这样你就可以保留ActionBar(或工具栏)的标题,但是当Activity创build时标题自动为空。
奇怪的是,当运行4.4.2(API 19)的Nexus 7时,这些工作都不适用于我。 在创build一个空白的活动应用程序后,至less在最新版本的Android Studio(1.2.1.1)中,
机器人:主题= “@风格/ AppTheme”
在应用程序元素中,而不是活动元素。 如果我删除了上面的代码或试图将其更改为:
机器人:主题= “@安卓风格/ Theme.Holo.Light.NoActionBar”
应用程序将不会运行…如果发生这种情况,只需进入styles.xml文件(res> values> styles.xml),并将.NoTitleBar添加到父块的末尾,就像这个块一样:
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar"></style>
不需要更改AndroidManifest文件。