聚焦后,TextView会变成橙色吗?

use*_*114 3 android

我有一个textview,我将它设置为可点击和可聚焦 - 当用户将其与拨轮轮等对焦时,如何让它突出显示为橙色(如按钮)?

TextView tv = ...;
tv.setClickable(true);
tv.setFocusable(true);
Run Code Online (Sandbox Code Playgroud)

谢谢

Oct*_*ean 10

这很容易.这是解决方案.

你有一个TextView元素,其background属性设置为@drawable/tbselector这样.

<TextView android:text="My text" 
    android:id="@+id/tv01"
    android:layout_width="300dip"
    android:layout_height="150dip"
    android:layout_gravity="center_horizontal"  
    android:background="@drawable/tbselector"/>
Run Code Online (Sandbox Code Playgroud)

最后一个属性android:background是必不可少的,其他东西由你决定.

现在,您tbselector.xmldrawable子目录中创建一个.看起来像这样.

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item
        android:drawable="@drawable/bgdefault"
        android:state_focused="false"
        android:state_selected="false"/>
    <item
        android:drawable="@drawable/bgselected"
        android:state_focused="true"
        android:state_selected="false"/>
</selector>
Run Code Online (Sandbox Code Playgroud)

现在,您bgdefault.xmldrawable子目录中创建一个如下所示的子目录.

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">
    <size
        android:width="200dip"
        android:height="150dip"
        android:color="#00FF00"/>
    <solid
        android:color="#00FF00"/>
</shape>
Run Code Online (Sandbox Code Playgroud)

最后bgselected.xml在您的drawable子目录中创建一个与其他颜色值相似的子目录,例如.

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">
    <size
        android:width="200dip"
        android:height="150dip"
        android:color="#FFFF00"/>
    <solid
        android:color="#FFFF00"/>
</shape>
Run Code Online (Sandbox Code Playgroud)

那就是你现在拥有一个依赖于状态的TextView背景.但是,您可以决定在选择器XML中设置drawable,这完全取决于您.我的值只是随机值,以显示差异.

希望能帮助到你.