material 主题工具栏上的渐变背景
Gradient background on material themed toolbar
我有一个带有叠加操作栏的照片预览 activity。我不希望此视图具有完全不透明的颜色,因为它会在缩放时遮挡图像。我创建了一个渐变设置为背景:
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<gradient
android:type="linear"
android:startColor="@color/theme_main_color_40pct"
android:endColor="@color/theme_main_color_0pct"
android:angle="270"/>
</shape>
我通过以下主题将此背景分配到我的工具栏:
<style name="my_toolbar" >
<item name="android:background">@drawable/ab_gradient_purple</item>
<item name="android:minHeight">?attr/actionBarSize</item>
<item name="android:textColorPrimary">?attr/colorAccent</item>
<item name="android:textColorSecondary">@android:color/white</item>
</style>
在我的布局中:
<android.support.v7.widget.Toolbar
android:id="@id/toolbar"
app:theme="@style/my_toolbar"
android:elevation="5dp"
android:layout_gravity="top"
android:layout_height="wrap_content"
android:layout_width="match_parent"/>
当我打开这个 activity 时,看起来工具栏正在采用该背景并将其应用于所有子视图,从而产生下图。如何防止这种叠加?
我试过 backgroundTint
和 backgroundTintMode
,但它们似乎不适用于 pre-lollipop。
似乎通过样式应用背景也适用于所有嵌套项目。我将样式背景设置为 @android:color/transparent
,在我的布局中:
<android.support.v7.widget.Toolbar
android:id="@id/toolbar"
app:theme="@style/my_toolbar"
android:background="@drawable/ab_gradient_purple"
android:elevation="5dp"
android:layout_gravity="top"
android:layout_height="wrap_content"
android:layout_width="match_parent"/>
结果正是我要找的:
我有一个带有叠加操作栏的照片预览 activity。我不希望此视图具有完全不透明的颜色,因为它会在缩放时遮挡图像。我创建了一个渐变设置为背景:
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<gradient
android:type="linear"
android:startColor="@color/theme_main_color_40pct"
android:endColor="@color/theme_main_color_0pct"
android:angle="270"/>
</shape>
我通过以下主题将此背景分配到我的工具栏:
<style name="my_toolbar" >
<item name="android:background">@drawable/ab_gradient_purple</item>
<item name="android:minHeight">?attr/actionBarSize</item>
<item name="android:textColorPrimary">?attr/colorAccent</item>
<item name="android:textColorSecondary">@android:color/white</item>
</style>
在我的布局中:
<android.support.v7.widget.Toolbar
android:id="@id/toolbar"
app:theme="@style/my_toolbar"
android:elevation="5dp"
android:layout_gravity="top"
android:layout_height="wrap_content"
android:layout_width="match_parent"/>
当我打开这个 activity 时,看起来工具栏正在采用该背景并将其应用于所有子视图,从而产生下图。如何防止这种叠加?
我试过 backgroundTint
和 backgroundTintMode
,但它们似乎不适用于 pre-lollipop。
似乎通过样式应用背景也适用于所有嵌套项目。我将样式背景设置为 @android:color/transparent
,在我的布局中:
<android.support.v7.widget.Toolbar
android:id="@id/toolbar"
app:theme="@style/my_toolbar"
android:background="@drawable/ab_gradient_purple"
android:elevation="5dp"
android:layout_gravity="top"
android:layout_height="wrap_content"
android:layout_width="match_parent"/>
结果正是我要找的: