在特定片段中隐藏工具栏(在 AppBarLayout 内)

Hide toolbar (inside a AppBarLayout) in a specific fragment

我刚开始学习android。为了开发与 Android Lollipop(API 21)和 android pre-lollipop 设备(API15)兼容的版本,我定义了两种不同的样式。第一种样式支持 ActionBar,另一种样式扩展 属性 .NoActionBar API21 及更高版本所需的样式。我想我可能误解了带有工具栏和操作栏的应用栏。

此外,我在主 activity 中使用了两个片段。我想知道是否有一种方法可以将工具栏(位于 xml 文件中的 AppBarLayout 内)隐藏在特定片段中并显示在另一个片段中。

AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example">
    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme">
        ...
        ...
    </application>
</manifest>

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">
            <com.example.MyTextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:textSize="22sp"
                android:layout_gravity="center"
                android:text="@string/app_name"/>
        </android.support.v7.widget.Toolbar>

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

styles.xml

<resources>
    <!-- Base application theme. -->
    <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
        <!-- Customize your theme here. -->
        <item name="colorPrimary">@color/colorPrimary</item>
        <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
        <item name="colorAccent">@color/colorAccent</item>
        <item name="windowNoTitle">true</item>
    </style>
    <style name="AppTheme.NoActionBar">
        <item name="windowActionBar">false</item>
        <item name="windowNoTitle">true</item>
    </style>

    <style name="AppTheme.AppBarOverlay" parent="ThemeOverlay.AppCompat.Dark.ActionBar" />

    <style name="AppTheme.PopupOverlay" parent="ThemeOverlay.AppCompat.Light" />

</resources>

styles.xml (v21)

<resources>
    <style name="AppTheme.NoActionBar">
        <item name="windowActionBar">false</item>
        <item name="windowNoTitle">true</item>
        <item name="android:windowDrawsSystemBarBackgrounds">true</item>
        <item name="android:statusBarColor">@android:color/transparent</item>
    </style>
</resources>

The first style supports ActionBar and the other one extends the property .NoActionBar which is needed for API21 and above.

不再推荐ActionBar,可以使用Toolbar everywhere. Make your activity extend AppCompatActivity and set your toolbar as Actionbar using setSupportActionBar (Toolbar toolbar)