2014-05-02 151 views
0

在我的android应用程序中,我有一个像这样的圆形背景的textview。正在使用带有边界的圆形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" 

/>

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

+1

子视图和覆盖的onDraw – Blackbelt

+0

请你更多的解释。 – user3293494

回答

1

变化circle.xml是一个选择器,它示出了一个可拉伸时被按下的状态下,和另一个用于默认状态(按下):

<?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> 

这个可绘制的图层是一个在紫色圆圈上放置白色圆环的图层列表。

而且你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" /> 
+0

这不会产生任何白色环。 – user3293494

+0

当文本框被按下时,是否从浅紫色变为深紫色?你的textview真的是5dp 5dp?这很小。 – myanimal

+0

不,没有颜色的变化。我也改变了120dp的大小。 – user3293494