如何向嵌套在折叠工具栏中的 ImageView 添加渐变

Posted

技术标签:

【中文标题】如何向嵌套在折叠工具栏中的 ImageView 添加渐变【英文标题】:How to add a gradient to a ImageView nested in a CollapsingToolbar 【发布时间】:2015-09-03 08:25:49 【问题描述】:

我正在开发一款带有 Material Design 的 android 应用。我有一个带有 CollapsingToolbarLayout 和 ImageView 的详细视图(到目前为止工作正常)。不幸的是,如果有一个明亮的图像,标题是不可读的。 到目前为止,我尝试添加渐变 (Add gradient to imageview),但由于 CollapsingToolbarLayout,此解决方案对我不起作用。 在这里你可以看到我的代码:

<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_
android:layout_
android:fitsSystemWindows="true">

<android.support.design.widget.AppBarLayout
    android:layout_
    android:layout_
    android:fitsSystemWindows="true"
    android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar">


    <android.support.design.widget.CollapsingToolbarLayout
        android:id="@+id/collapsing_toolbar"
        android:layout_
        android:layout_
        app:layout_scrollFlags="scroll|exitUntilCollapsed"
        app:contentScrim="@color/primary"
        android:fitsSystemWindows="true"
        app:expandedTitleMarginEnd="50dp"
        app:expandedTitleMarginStart="50dp"
        >


        <!--<View
            android:background="@drawable/actionbar_gradient_dark"
        />-->
            <ImageView
                android:id="@+id/backimg"
                android:layout_
                android:layout_
                android:fitsSystemWindows="true"
                app:layout_collapseMode="parallax"
                android:scaleType="centerCrop"
                app:layout_scrollFlags="scroll|enterAlways"
                />

        <android.support.v7.widget.Toolbar
            android:id="@+id/detailToolbar"
            android:layout_
            android:layout_
            app:layout_collapseMode="pin"
            app:layout_collapseParallaxMultiplier="0.7"
            app:layout_scrollFlags="scroll|enterAlways"
            app:popupTheme="@style/ThemeOverlay.AppCompat.Light"/>

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

有人知道这个问题的解决方案吗?

【问题讨论】:

你是否只将渐变应用于与字体颜色相似的图像? 我对所有与我的标题颜色相似的图片都使用了渐变。 【参考方案1】:

将您的 ImageView 包装在 FrameLayout 中并添加一个带背景的 View:

<FrameLayout
    android:layout_
    android:layout_>

    <ImageView
        android:id="@+id/backimg"
        android:layout_
        android:layout_
        android:fitsSystemWindows="true"
        app:layout_collapseMode="parallax"
        android:scaleType="centerCrop"
        android:src="@drawable/image"
        app:layout_scrollFlags="scroll|enterAlways" />
    <View
        android:layout_
        android:layout_
        android:background="@drawable/actionbar_gradient_dark" />
</FrameLayout>

确保你的渐变是这样的:

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle" >
    <gradient
        android:angle="90"
        android:endColor="@android:color/transparent"
        android:startColor="@android:color/black" />
    <corners android:radius="0dp" />
</shape>

【讨论】:

你是否只将渐变应用于与字体颜色相似的图像?

以上是关于如何向嵌套在折叠工具栏中的 ImageView 添加渐变的主要内容,如果未能解决你的问题,请参考以下文章

将 ImageView 锚定到折叠工具栏

折叠UICollectionView

安卓Design包之CollapsingToolbarLayout(可折叠的工具栏布局)的简单使用

如何从嵌套数组中获取特定标题并设置为折叠?

如何在工具栏中居中ImageView?

Vis.js 时间轴 - 如何在不嵌套的情况下折叠组