在我的Android应用程序中,有一个在运行时加载的表格布局。我已经实现了一个代码,可以在单击该行时更改此表的背景颜色。
private OnClickListener trOnClickListener = new OnClickListener() {
public void onClick(View v) {
TableRow tablerow = (TableRow)v;
tablerow.setBackgroundDrawable(getResources().getDrawable(
R.drawable.table_row_selector));
}
};
现在我想在用户点击表格的另一行时删除这种颜色,新点击的行应该改变它的颜色。
这是我的绘画。
<?xml version="1.0" encoding="utf-8"?>
<item android:drawable="@drawable/ab_stacked_solid_whiteaction" android:state_pressed="true"/>
<item android:drawable="@drawable/table_shape" android:state_enabled="true"/>
非常感谢任何建议。
Thanx in advcance
答案 0 :(得分:1)
将您的drawable改为看起来像这样
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/background_selected" android:state_enabled="true"
android:state_pressed="true"/>
<item android:drawable="@drawable/background_selected" android:state_enabled="true"
android:state_focused="true"/>
<item android:drawable="@drawable/background_selected" android:state_enabled="true"
android:state_selected="true"/>
<item android:drawable="@drawable/background_selected" android:state_active="true"
android:state_enabled="true"/>
<item android:drawable="@drawable/background_selectable" android:state_pressed="false"/>
<item android:drawable="@drawable/background_selectable" android:state_focused="false"/>
<item android:drawable="@drawable/background_selectable" android:state_selected="false"/>
<item android:drawable="@drawable/background_selectable" android:state_active="false"/>
</selector>
然后将行设置为tablerow.setSelected(true)
。选择其他行后,将上一个选定的行设置为tablerow.setSelected(false)
,将新选择的行设置为true
我在我的一个ListViews
中使用它并且它有效。
希望这有帮助
答案 1 :(得分:0)
如果你是从xml使用选择器,并申请作为背景或来源..
答案 2 :(得分:0)
创建一个字段:查看restoredView
row.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (restoredView != null) {
restoredView.setBackgroundColor(Color.parseColor("#EEEEEE"));
}
view.setBackgroundColor(Color.parseColor("#DDDDDD"));
restoredView = view;
}
});