如何在android中添加文本scrim

时间:2015-04-18 15:53:40

标签: user-interface android-layout textview imageview

目标: 在图像顶部叠加文本标题。像这样:

当前实施:我有CardView,其中包含ImageViewTextView。我可以把文字放在图像的顶部,但我不能得到那个背景稀松布。

问题:我需要背景稀松布,因为没有它,文字在图像上难以辨认。

Stack: Android L

布局XML:

<android.support.v7.widget.CardView
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:card_view="http://schemas.android.com/apk/res-auto"
    android:id="@+id/event_cardView"
    android:layout_width="match_parent"
    android:layout_height="200dp"
    android:layout_margin="3dp"
    card_view:cardCornerRadius="10dp"
    card_view:cardElevation="5dp">

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:padding="10dp">

        <ImageView
            android:id="@+id/eventImage"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:contentDescription="eventImage"
            android:src="@drawable/sample"
            android:layout_alignParentTop="true" />

        <TextView
            android:id="@+id/eventName"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:padding="2dip"
            android:textColor="#000000"
            android:textSize="15sp"
            android:maxLines="5"
            android:gravity="center"
            android:layout_alignParentBottom="true"
            android:text="Event Name" />
    </RelativeLayout>
</android.support.v7.widget.CardView>

非常感谢您对此有所帮助。

1 个答案:

答案 0 :(得分:18)

创建仅包含XML名称空间作为形状属性的shape drawable resource。根据您是否需要实体或渐变稀松布,将更改形状元素的内容。

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

    <!-- The content of the shape will go here. -->

</shape>

如果你想要一个纯色的稀松布,可以在你的形状元素中添加一个实体元素,并将属性android:color设置为带有alpha的颜色。

<solid
    android:color="#88000000"/>

如果你想要一个渐变稀松布,请在android命名空间中添加一个带有以下属性的渐变元素:anglecenterYstartColorcenterColor,{{1 }和endColor。如果您想关注the Material Design guidelines,就像您提供的图片一样,渐变元素应具有以下值:

type

最好提取这些值并将其放在相关的资源文件中,例如<gradient android:angle="90" android:centerY="0.3" android:startColor="#CC000000" android:centerColor="#66000000" android:endColor="#00000000" android:type="linear"/> dimens.xml,以便稀松布可以根据设备的配置而改变。

将平纹棉布保存为形状可绘制资源后,您可以使用colors.xml属性将其添加到TextView的背景中。使用您提供的android:background并假设您将scrim文件命名为TextView,修改如下:

scrim.xml