目的:
在图像顶部覆盖文本标题。像这样:

user-interface - 如何在Android中添加文本稀松布-LMLPHP

当前实现:我有一个CardView,它由一个ImageView和一个TextView组成。我可以将文本放在图像的顶部,但是无法获得背景稀松布。

问题:我需要那种背景稀松布,因为没有它,文本在图像顶部就难以辨认。

堆栈: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>


希望对任何帮助有所帮助。

最佳答案

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



<?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名称空间添加具有以下属性的渐变元素:anglecenterYstartColorcenterColorendColortype。如果要遵循the Material Design guidelines,例如在您提供的图像中,渐变元素应具有以下值:

<gradient
    android:angle="90"
    android:centerY="0.3"
    android:startColor="#CC000000"
    android:centerColor="#66000000"
    android:endColor="#00000000"
    android:type="linear"/>


最好将这些值提取出来并放在相关的资源文件中,例如dimens.xmlcolors.xml,以便可以根据设备的配置更改稀松布。

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

<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"
    android:background="@drawable/scrim"/>

10-06 06:32