带有边界的圆形TextView

时间:2014-05-02 17:11:48

标签: android textview geometry

在我的Android应用程序中,我有一个像这样的循环背景的textview。

enter image description here

正在使用以下代码。

<TextView 
android:id="@+id/tv4"
android:layout_width="5dp"
android:layout_height="5dp"
android:background="@drawable/circle"
android:layout_alignParentRight="true"
android:layout_marginRight="50dp"
android:layout_centerVertical="true"

/&GT;

circle.xml

<?xml version="1.0" encoding="utf-8"?> 
<shape xmlns:android="http://schemas.android.com/apk/res/android"> 
<solid android:color="#ff0000" /> 
<corners android:topLeftRadius="60dp" android:topRightRadius="60dp"    android:bottomLeftRadius="60dp" android:bottomRightRadius="60dp" /> 
</shape>

当触摸圆圈时,我希望它具有像此图像一样的圆形边界。即使鼠标移开,它也应该保持这种状态。怎么办呢?

enter image description here

2 个答案:

答案 0 :(得分:2)

使用您想要的不同状态的drawable创建一个xml drawable。 https://developer.android.com/guide/topics/resources/drawable-resource.html#StateList 然后将该drawable设置为您的背景。

答案 1 :(得分:1)

circle.xml更改为选择器,在按下状态时显示一个drawable,另一个用于默认状态(未按下):

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_pressed="true" android:drawable="@drawable/circle_pressed" />
    <item>
        <shape android:shape="oval">
            <solid android:color="#762C54" />
        </shape>
    </item>
</selector>

然后创建一个可绘制资源circle_pressed.xml

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item >
        <shape>
            <solid android:color="#ff762c54" />
            <padding android:bottom="15dp"
                android:top="15dp"
                android:left="15dp"
                android:right="15dp"
                />
        </shape>
    </item>
    <item>
        <shape android:shape="oval">
            <stroke android:width="2dp" android:color="#ffffff"/>
            <size android:height="105dp" android:width="105dp"/>
        </shape>
    </item>
</layer-list>

这个drawable是一个将白色环放在紫色圆圈上的图层列表。

您的TextView必须是clickable

<TextView 
    android:id="@+id/tv4"
    android:clickable="true"
    android:layout_width="120dp"
    android:layout_height="120dp"
    android:background="@drawable/circle"
    android:layout_alignParentRight="true"
    android:layout_marginRight="50dp"
    android:layout_centerVertical="true" />