将阴影添加到圆角TextView?

时间:2018-01-05 16:50:51

标签: android

我想在文字视图中添加阴影。我找到了添加渐变的解决方案和另一个解决方案,建议在原始textView的背面创建一个带有较浅阴影的重复文本视图,以产生阴影效果。但我希望有一个真正的阴影效果。

这就是我试过的。我创建了一个xml文件rounded_corner.xml

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" >
    <stroke
        android:width="1dp"
        android:color="#33000000"
        android:dashWidth="3dp"
        />

    <solid android:color="#000000" />
    <padding

        android:left="1dp"
        android:right="1dp"
        android:top="1dp" />

    <corners android:radius="10dp"
        />

</shape>

我添加了高程和translationz,但它没有在输出中显示阴影

<TextView
        android:background="@drawable/rounded_corners"

        android:layout_width="260dp"
        android:layout_height="70dp"
        android:textSize="50sp"
        android:text="Welcome User"
        android:layout_centerHorizontal="true"
        android:layout_marginBottom="20dp"
        android:textColor="#000000"
        android:elevation="50dp"
        android:translationZ="10dp"
        android:id="@+id/welcome"/>

3 个答案:

答案 0 :(得分:3)

我假设您想要将阴影放在TextView上,而不是放在文本本身上。您可以在圆角可绘制文件中创建一个图层列表,如下所示:

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item>
        <shape  android:shape="rectangle">
            <solid android:color="@android:color/black" />
            <corners android:radius="3dp" />
        </shape>
    </item>
    <item android:bottom="2dp" android:right="2dp">
        <shape  android:shape="rectangle">
            <solid android:color="#282828" />
            <stroke android:width="1dp" android:color="#302f2f" />
        </shape>
    </item>
</layer-list>

如果您将drawable作为TextView的背景

<TextView
       android:layout_width="match_parent"
       android:layout_height="wrap_content"
       android:background="@drawable/rounded_corner"

输出将链接如下:enter image description here

答案 1 :(得分:2)

您可以使用影子XML属性。

android:shadowColor="#000"
android:shadowDx="0"
android:shadowDy="0"
android:shadowRadius="50"

有关详细信息,请查看此链接https://developer.android.com/reference/android/widget/TextView.html#attr_android:shadowColor

答案 2 :(得分:2)

只需在TextView XML上填写文本上的阴影:

android:shadowColor="@android:color/holo_purple"
android:shadowDx="10"
android:shadowDy="10"
android:shadowRadius="5"

您可以根据自己的喜好进行修改。 并在所有输入中为阴影创建一个Drawable文件,或多或少像这样:

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >

<!-- Bottom 2dp Shadow -->
<item>
    <shape android:shape="rectangle" >
        <solid android:color="#d8d8d8" />

    </shape>
</item>

<!-- White Top color -->
<item android:bottom="4px" android:left="0px" android:right="4px" android:top="0px">
    <shape android:shape="rectangle" >
        <solid android:color="#FFFFFF" />

    </shape>
</item>

</layer-list>