安卓:AppBarLayout渐变背景

10

我尝试实现带有渐变背景(从黑色到透明)的工具栏。该工具栏位于AppBarLayout内部,AppBarLayout又位于CoordinatorLayout中,因为我希望在滚动屏幕时工具栏可以从屏幕上滑出去(这是通过设置scroll|enterAlways滚动标志来实现的)。对于早期版本,这项工作非常顺利,效果如下:

enter image description here

但是在Lollipop上,显示的结果是这样的:

weird upside down trapezoid in the background

我尝试了其他背景组合,让工具栏具有渐变背景,但所有的尝试都产生了相同的结果。我搜索了类似的问题,但没有找到任何解决方法。

<android.support.design.widget.CoordinatorLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <android.support.design.widget.AppBarLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="@drawable/gradient">

        <android.support.v7.widget.Toolbar
            android:layout_height="wrap_content"
            android:layout_width="match_parent"
            android:background="@android:color/transparent"
            app:layout_scrollFlags="scroll|enterAlways">

            ...

        </android.support.v7.widget.Toolbar>
    </android.support.design.widget.AppBarLayout>
</android.support.design.widget.CoordinatorLayout>

1
https://code.google.com/p/android/issues/detail?id=180119 - jpardogo
似乎是一个类似的问题,但我没有使用高程,并且视觉效果看起来更糟。 - neits
你现在有解决方案了吗?我也遇到了同样的问题! - Lạng Hoàng
抱歉,目前还没有解决方案。 - neits
2个回答

5

AppBarLayout会强制显示高度。由于工具栏位于AppBarLayout内部,并且是透明的,因此AppBarLayout的侧面和底部阴影变得明显。

请在AppBarLayout中包含app:elevation="0dp"。希望能对你有所帮助。


谢谢。我只想补充一点,这也适用于设置带有 alpha 值的背景颜色的情况。在设置带有 alpha 值的背景颜色时,无需设置 app:elevation="0dp",否则边框周围的颜色会比 appbarlayout 区域的其余部分更暗。谢谢! - KingJinho

0
将Toolbar和TabLayout放入LinearLayout中,并为LinearLayout设置背景属性,代码如下。它可以正常工作,我在我的应用程序中使用了这段代码。
<android.support.design.widget.AppBarLayout
    android:id="@+id/appbar"
    android:layout_width="match_parent"
    android:layout_height="72dp"
    android:theme="@style/AppTheme.AppBarOverlay">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical"
        android:background="@drawable/appbar_bg">

        <android.support.v7.widget.Toolbar
            android:id="@+id/toolbar"
            android:layout_width="match_parent"
            android:layout_height="36dp"
            android:background="@android:color/transparent"
            app:layout_scrollFlags="scroll|enterAlways"
            app:popupTheme="@style/AppTheme.PopupOverlay">

        </android.support.v7.widget.Toolbar>

        <android.support.design.widget.TabLayout
            android:id="@+id/tabs"
            android:layout_width="match_parent"
            android:layout_height="wrap_content" />

    </LinearLayout>

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

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