8

我在折叠工具栏时遇到问题,在展开状态下我想要文本下的模糊阴影,我使用以下代码:

collapsingToolbar.setExpandedTitleTextAppearance(R.style.toolbar_text);

和 :

<style name="toolbar_text">
    <item name="android:textColor">@color/white</item>
    <item name="android:shadowColor">@color/black</item>
    <item name="android:shadowDx">2</item>
    <item name="android:shadowDy">2</item>
    <item name="android:shadowRadius">4</item>
</style>

我可以更改textColor,它可以工作,但阴影不起作用。我尝试了许多不同的阴影值。

是否可以为折叠的文本投下阴影?因为在浅色图像上,标题有时难以阅读。

4

3 回答 3

5

不要使用 textshadow,而是使用文本保护稀松布。看到这个问题:Android CollapsingToolbarLayout 标题背景

于 2015-09-01T17:58:48.430 回答
1

看起来,作为设计支持 lib 版本22.2.1,这是不可能的。

这是设置文本外观的反编译方法:

void setExpandedTextAppearance(int resId) {
    TypedArray a = this.mView.getContext().obtainStyledAttributes(resId, styleable.TextAppearance);
    if(a.hasValue(styleable.TextAppearance_android_textColor)) {
        this.mExpandedTextColor = a.getColor(styleable.TextAppearance_android_textColor, 0);
    }

    if(a.hasValue(styleable.TextAppearance_android_textSize)) {
        this.mExpandedTextSize = (float)a.getDimensionPixelSize(styleable.TextAppearance_android_textSize, 0);
    }

    a.recycle();
    this.recalculate();
}

它只设置文本颜色和大小。

更新:由于您提到您需要在标题中添加阴影以使其在浅色背景上更易于阅读,因此我建议您将扩展的标题颜色更改为深色。例如

collapsingToolbar.setExpandedTitleColor(0x000);
于 2015-08-17T14:30:29.247 回答
0

我通过以下代码实现了文本阴影。我在 ImageView 的位置使用了 FrameLayout,而 FrameLayout 同时具有 ImageView 和 View 的背景渐变。

  •         <ImageView
                android:id="@+id/groupIcon"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:fitsSystemWindows="true"
                android:scaleType="centerCrop"
                android:src="@drawable/drawer_header_background"
                app:layout_collapseMode="parallax" />
    
            <View
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:background="@drawable/coll_toolbar_image_gradient" />
        </FrameLayout>
    

coll_toolbar_image_gradient.xml

<gradient
    android:angle="90"
    android:centerColor="#00ffffff"
    android:endColor="#aa000000"
    android:startColor="#aa000000" />
<corners android:radius="0dp" />

于 2015-09-28T09:37:28.450 回答