启用和禁用TextView背景颜色

时间:2016-08-31 11:56:29

标签: android

我有四个TextView,用户一次只能选择一个。我想更改所选textView的背景颜色,如果用户选择任何其他textview,则应禁用之前选择的textView。

这是我的TextView Xml:

 <TextView
                android:id="@+id/goalText2"
                android:layout_width="match_parent"
                android:layout_height="70dp"
                android:background="@drawable/white_border_rounded"
                android:padding="4dp"
                android:layout_margin="18dp"
                android:layout_gravity="fill"
                android:gravity="center"
                android:text="@string/goal2"
                android:textColor="@color/white"
                android:textSize="21sp"/>

我为textView创建了一个单独的xml:

<?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"  >
            <corners android:radius="50dip" />
            <stroke android:width="1dip" android:color="@color/white" />
            <gradient android:angle="-90" android:startColor="#ffffff" android:endColor="#ffffff"  />
        </shape>
    </item>
    <item android:state_focused="true">
        <shape android:shape="rectangle"  >
            <corners android:radius="50dip" />
            <stroke android:width="1dip" android:color="@color/white" />
            <solid android:color="#ffffff"/>
        </shape>
    </item>
    <item >
        <shape android:shape="rectangle"  >
            <corners android:radius="50dip" />
            <stroke android:width="1dip" android:color="@color/white" />
            <gradient android:angle="-90" android:startColor="@color/transparent_white" android:endColor="@color/transparent_white" />
        </shape>
    </item>
</selector>

我尝试以编程方式进行,但它对我没用。

public void onClick(View v) {
    switch(v.getId()){
        case R.id.goalText1:
            if(mGoal1.isSelected())
                mGoal1.setBackgroundColor(Color.WHITE);
            break;
       }

有人可以建议我怎么做吗?

1 个答案:

答案 0 :(得分:0)

在后台xml中使用state_selected属性:

<item android:state_selected="true">...</item>

然后在代码中你可以:

mGoal2.setSelected(true); 
mGoal1.setSelected(false);

更改背景。