隐藏API 21上的“ActionBar”

时间:2014-10-30 14:19:33

标签: android android-actionbar android-5.0-lollipop

我昨天更新了AndroïdSDK,因此我将targetSdkVersion更改为21。 由于我做了这个更新,我无法在活动中隐藏“ActionBar”(这不是真正的一个)。

在我的应用程序中,我只想显示一个没有标题栏且没有操作栏的活动。

所有活动都使用了这个主题:

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

我在相关活动中试过这个:

@Override
protected void onCreate(final Bundle savedInstanceState) {
    this.supportRequestWindowFeature(Window.FEATURE_NO_TITLE);
}

但它不起作用。 我还尝试过:getSupportActionBar().hide()getSupportActionBar()会返回null

你有什么想法吗?

5 个答案:

答案 0 :(得分:7)

像这样使用getActionBar().hide()

public class MyActivity extends ActionBarActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity);

        this.getActionBar().hide();
    }
}

答案 1 :(得分:3)

我有一个带有活动的应用程序而没有应用此样式的操作栏:

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

在API 21上切换项目后,它不再起作用,所以我不得不将样式更改为:

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

当然你必须在AndroidManifest.xml中应用它:

<activity
    android:name=".activities.ActivitySplash"
    android:theme="@style/AppBaseThemeNoActionBar">
</activity>

文档:http://android-developers.blogspot.be/2014/10/appcompat-v21-material-design-for-pre.html

答案 2 :(得分:1)

以上使用getActionbar().hide()的解决方案对我没有用,所以我决定使用以下内容:

只需创建一个新主题,它是当前主题的扩展,并从中删除工具栏

public class YourActivity extends ActionBarActivity
{
    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setTheme(R.style.YourTheme_NoTitleBar);
        setContentView(R.layout.activity_your);

        //...
    }
}

可能的主题定义示例

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <style name="YourTheme" parent="YourTheme.Base"/>

    <style name="YourTheme.Base" parent="Theme.AppCompat">
        <item name="colorPrimary">YOURCOLOR1</item>
        <item name="colorPrimaryDark">YOURCOLOR2</item>

        <!-- to show toolbar, be careful if windowNoTitle is set to true it will show the toolbar-->
        <item name="android:windowNoTitle">true</item>
        <item name="windowActionBar">true</item>

        <item name="android:windowBackground">@color/YOURCOLOR3</item>
    </style>

    <style name="YourTheme.NoTitleBar" parent="YourTheme">
        <item name="android:windowNoTitle">true</item>
        <item name="windowActionBar">false</item>
    </style>

</resources>

注意.NoTitleBar这可以是任何东西,但我采取这一点使其合乎逻辑,只需确保两个值都正确设置。如果windowActionBar设置为false但android:windowNoTitle仍然为false,那么它仍会显示工具栏!

官方文档http://android-developers.blogspot.be/2014/10/appcompat-v21-material-design-for-pre.html

答案 3 :(得分:0)

不是扩展到ActionBarActivity,而是将MainActivity类扩展为Activity,即

public class MyActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity);


    }
}

答案 4 :(得分:-1)

转到您的文件夹清单,然后打开AndroidManifest.xml

搜索应用标记下的行,

android:theme

这里放置任何没有Action Bars的主题。

就是这样!!