Android:单击时更改表格行颜色,单击表格的另一行时删除颜色

时间:2013-11-15 10:06:10

标签: java android tablelayout

在我的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

3 个答案:

答案 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;
    }
});
相关问题