无法使AppCompat ActionBar/工具栏成为叠加层

4

所以,我有一个工具栏,我将其设置为我的supportActionBar,我希望它处于覆盖模式。到这个时候,我感觉我已经尝试过所有的方法,但似乎什么都不起作用。

以下是我当前拥有的样式:

<style name="Theme.ArgleBargle" parent="@style/Theme.AppCompat.Light">
    <item name="colorPrimary">@color/primary</item>
    <item name="colorAccent">@color/accent</item>
    <item name="vpiIconPageIndicatorStyle">@style/Widget.IconPageIndicator</item>
    <item name="vpiTabPageIndicatorStyle">@style/Widget.TabPageIndicator</item>
    <item name="windowActionBar">false</item>
    <item name="windowActionBarOverlay">true</item>
    <item name="android:windowActionBarOverlay">true</item>
    <item name="android:windowBackground">@color/background</item>
</style>

<style name="CustomActionBar" parent="@style/ThemeOverlay.AppCompat.Light">
    <item name="android:windowActionBarOverlay">true</item>
    <!-- Support library compatibility -->
    <item name="windowActionBarOverlay">true</item>
</style>

这是我的工具栏代码:

<android.support.v7.widget.Toolbar
        android:id="@+id/actionbar"
        android:layout_height="wrap_content"
        android:layout_width="match_parent"
        android:minHeight="?attr/actionBarSize"
        android:background="?attr/colorPrimary"
        app:theme="@style/CustomActionBar"/>

最后,这是我在Activity中设置它的地方:

actionbar = (Toolbar) findViewById(R.id.actionbar);;
setSupportActionBar(actionbar);

我也尝试了调用getWindow().requestFeature(Window.FEATURE_ACTION_BAR_OVERLAY),但没有成功。

1个回答

5

所以,问题其实非常简单,但对我来说并不明显。基本上问题在于虽然工具栏被设置为操作栏,但它仍然是在XML中声明的布局元素。因此,诀窍当然是确保它在XML中重叠。下面是我的布局示例:

<RelativeLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <android.support.v7.widget.Toolbar
        android:id="@+id/actionbar"
        android:layout_height="wrap_content"
        android:layout_width="match_parent"
        android:minHeight="?attr/actionBarSize"
        android:background="?attr/colorPrimary"/>

    <FrameLayout
        android:id="@+id/container"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />

</RelativeLayout>

现在一切都按预期进行。如果其他人遇到相同的问题,希望这可以帮到他们!


5
Android SDK 应该自动提供这个功能。另外,在 Android Lollypop 中,使用展开/折叠工具栏的标准设计没有标准方法。这对于 Android 开发者来说是一场噩梦。 - rDroid
正确的RelativeLayout代码应该是在FrameLayout之后加上android.support.v7.widget.Toolbar,这样Toolbar就可以覆盖在FrameLayout上方。 - shkschneider
我认为上面的代码可能不会显示工具栏,因为框架可能会隐藏它。您可能需要更改框架布局和工具栏的顺序。 - Siddhant Jain
我认为应该交换帧布局和工具栏的顺序,但是您不需要使用RelativeLayout,对吗?您可以将其更改为FrameLayout - Pin

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接