自定义TextView功能使用android:background标签不止一次

时间:2015-05-26 19:12:21

标签: android xml android-layout

我的android:background标记存在问题,我只能使用一次,而我的TextView需要不止一次的功能。更多详情如下:

我得到3 TextView

<LinearLayout android:id="@+id/info" android:layout_marginTop="68dp"
        android:layout_width="wrap_content" android:layout_height="fill_parent"
        android:layout_centerHorizontal="true"
        android:orientation="horizontal">

        <TextView android:id="@+id/tour1"
            android:paddingLeft="10dp" android:paddingRight="10dp"
            android:paddingTop="8dp" android:paddingBottom="8dp"
            android:layout_width="wrap_content" android:layout_height="wrap_content"
            android:background="@drawable/back"
            android:gravity="center"
            android:text="Tour \n disponibili  \n 21"/>

        <TextView android:id="@+id/tour2" android:layout_toRightOf="@+id/tour1"
            android:paddingLeft="10dp" android:paddingRight="10dp"
            android:paddingTop="8dp" android:paddingBottom="8dp"
            android:layout_width="wrap_content" android:layout_height="wrap_content"
            android:background="@drawable/back"
            android:gravity="center"
            android:text="Tour \n prenotabili  \n 16"
            android:layout_marginLeft="16dp"/>

        <TextView android:id="@+id/tour3" android:layout_toRightOf="@+id/tour2"
            android:paddingLeft="10dp" android:paddingRight="10dp"
            android:paddingTop="8dp" android:paddingBottom="8dp"
            android:layout_width="wrap_content" android:layout_height="wrap_content"
            android:background="@drawable/back"
            android:gravity="center"
            android:text="Tour \n preferiti  \n 3"
            android:layout_marginLeft="16dp"/>
    </LinearLayout>

显示在这里:

enter image description here

使用TextView文件夹中包含的此文件back.xml获取res/drawable边框:

<shape xmlns:android="http://schemas.android.com/apk/res/android"   
    android:shape="rectangle" >
    <!--<solid android:color="#ffffff" />-->
    <stroke android:width="1dip" android:color="#4fa5d5"/>
</shape>

由于我已经使用背景标记输入back.xml文件并为TextView创建矩形边框,因此我不知道如何将其用于我的其他需求, :

  • 获取TextView WITH和圆角的边框
  • 获取一个图标作为TextView的背景,如下所示:here

据我所知,我只能使用标记background执行此操作,该标记已用于获取back.xml drawable。

我如何满足我的需求?

1 个答案:

答案 0 :(得分:1)

您提供的示例最有可能通过“drawableTop”属性实现。就像你说的,每个属性只能使用一次,所以如果你想使用不同的图像并让它们成为背景的一部分,你需要为每个视图提供不同的背景资源。

对于圆角,在标签下方的back.xml文件中添加标签,并使用“android:radius”定义半径。

要创建一个也对状态更改做出反应的选择器(假设您希望在按下视图时边框变为红色),请使用:

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

<item android:state_pressed="true" >
    <shape android:shape="rectangle" >
        <stroke android:width="1dip" android:color="#ff0000"/>
        <corners android:radius="5dip" />
    </shape>
</item>

<item>
    <shape android:shape="rectangle" >
        <stroke android:width="1dip" android:color="#4fa5d5"/>
        <corners android:radius="5dip" />
    </shape>
</item>

</selector>

将它放在drawable文件夹中并指向“background”属性。