如何在Android中以编程方式显示/隐藏windowActionBar?

时间:2016-10-01 17:11:20

标签: java android

我将一种风格应用于两种活动。 MainActivity.java有工具栏设置而不是操作栏,因此,我在主题样式中有以下行来隐藏操作栏:

<item name="windowActionBar">false</item>

在另一项活动中,我启用了操作栏:

final ActionBar actionBar = getSupportActionBar();
actionBar.setDisplayShowHomeEnabled(true);
actionBar.setDisplayHomeAsUpEnabled(true);

但是这会返回 NOException 错误。

我试过以下但没有帮助:

actionBar.show();

样式:

<style name="BrownTheme" parent="Theme.AppCompat.Light.NoActionBar">
    <item name="colorPrimary">@color/brown</item>
    <item name="colorPrimaryDark">@color/dark_brown</item>
    <item name="colorAccent">@color/colorAccent</item>
    <item name="buttonStyle">@color/brown</item>
    <item name="windowActionBar">false</item>
    <item name="windowNoTitle">true</item>
</style>

精化: 我正在使用两种活动的风格。第一个活动有自己的工具栏而不是默认操作栏,第二个活动有操作栏。如果我从样式中删除然后我无法运行第一个活动,如果我放,那么我就无法运行第二个活动。我想在第二个活动中以编程方式启用它。

是否有可能以编程方式更改样式项属性?或任何覆盖方法绕过我在样式项属性中的内容?

2 个答案:

答案 0 :(得分:0)

getSupportActionBar().hide();隐藏

getSupportActionBar().show();显示。

答案 1 :(得分:0)

我使用自定义工具栏修复了这两项活动。

style.xml现在有以下主题:

<style name="BrownTheme" parent="Theme.AppCompat.Light.NoActionBar">
    <item name="colorPrimary">@color/brown</item>
    <item name="colorPrimaryDark">@color/dark_brown</item>
    <item name="colorAccent">@color/colorAccent</item>
    <item name="buttonStyle">@color/brown</item>
</style>

在第二项活动(或所有其他活动)中:

Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
getSupportActionBar().setDisplayShowHomeEnabled(true);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);

工具栏布局(app_bar_main.xml):

<android.support.design.widget.AppBarLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:theme="@style/AppTheme.AppBarOverlay">

    <android.support.v7.widget.Toolbar
        android:id="@+id/toolbar"
        android:layout_width="match_parent"
        android:layout_height="?attr/actionBarSize"
        android:background="?attr/colorPrimary"
        app:popupTheme="@style/AppTheme.PopupOverlay" />

</android.support.design.widget.AppBarLayout>

活动布局:

<include
    layout="@layout/app_bar_main"
    android:layout_width="match_parent"
    android:layout_height="match_parent" />