我有四个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;
}
有人可以建议我怎么做吗?
答案 0 :(得分:0)
在后台xml中使用state_selected属性:
<item android:state_selected="true">...</item>
然后在代码中你可以:
mGoal2.setSelected(true);
mGoal1.setSelected(false);
更改背景。