如何显示textview是可点击的?

时间:2015-02-10 13:39:10

标签: android textview

我有五个文本视图,所有都是可点击的,如何给它们一个视觉效果,以便用户可以识别它是可点击的。我已经放弃了强调textview的想法,所以还有其他方法可用。

我的代码

<?xml version="1.0" encoding="utf-8"?>
 <selector xmlns:android="http://schemas.android.com/apk/res/android">
     <item android:state_pressed="true"
           android:color="#94FFFF" /> <!-- pressed -->

     <item android:state_focused="true"
           android:color="#94FFFF" /> <!-- focused -->
     <item android:color="#5C9E70" /> <!-- default -->
 </selector>

2 个答案:

答案 0 :(得分:3)

我最喜欢的是围绕TextView绘制一个圆圈,实际上它是一个包含TextView样式元素的按钮;

<Button
    android:id="@+id/quit"
    style="@android:style/Widget.TextView"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true"
    android:layout_centerHorizontal="true"
    android:text="Your Text"
    android:paddingBottom="8dp"
    android:paddingLeft="8dp"
    android:paddingRight="8dp"
    android:paddingTop="8dp"
    android:minHeight="0dp"
    android:minWidth="0dp"
    android:textColor="#ffffff"
    android:background="@drawable/but_bg" />

其中but_bg是包含

的.xml
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item>
    <shape>
        <gradient
            android:type="radial" android:gradientRadius="820"
            android:startColor="#df242424"
            android:centerColor="#df343434"
            android:endColor="#da444444"
            android:angle="270" />
        <stroke
            android:width="1dp"
            android:color="#ffffff" />
        <corners
            android:radius="7dp" />
        <padding
            android:left="8dp"
            android:top="8dp"
            android:right="8dp"
            android:bottom="8dp" />
       </shape>
       </item>
</selector>

使用那里的径向颜色,你也可以使它看起来更塑料。这看起来像button

您还可以将xml drawable应用于布局,以防您想要保留TextView。然后你就像这样包装它:

<LinearLayout
    android:orientation="vertical"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:background="@drawable/but_bg"
[...]>
    <TextView 
       [...] />
</LinearLayout>
编辑:我刚刚意识到Button基本上是另一种风格的TextView子类。我没有使用TextView代码对此进行测试,但如果有人希望将其保留为TextView,它应该以相同的方式运行。

答案 1 :(得分:1)

您可以使用StateListDrawable。只需使用selector创建一个xml文件作为根标记,并根据您想要的行为将其textColorbackgroundColor分配给TextView

<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item
       android:state_activated="true"
       android:state_pressed="true"
       android:drawable="@drawable/pressed_img" />
    <item
       android:state_activated="true"
       android:drawable="@drawable/pressed_img" />
    <item
       android:drawable="@drawable/normal_img" />
</selector>

此外,您必须将TextView属性设置为android:clickable,才能点击true