Android:Selector在TableRow选择中没有按预期工作

时间:2012-01-19 14:03:11

标签: android colors selector tablerow

我的XML中有一个TAbleLayout,有一行,即te标题行。其他所有行,我动态添加。我想在点击它时选择一行&在触摸它。我将clickListener添加到每一行,并能够捕获click事件。但是当按下或按住鼠标时,我看到颜色变化,然后再次出现正常颜色。我希望颜色保持不变,直到我单击其他行或单击其他位置以停用所选行。

我的选择器XML代码:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
<!--  Active state -->  
<item android:state_selected="true" android:state_focused="false"
      android:state_pressed="false" android:drawable="@android:color/transparent" />      
<!--  Inactive state-->  
<item android:state_selected="false" android:state_focused="false"
      android:state_pressed="false" android:drawable="@android:color/transparent" /> 
 <!--  Pressed state --> 
 <item android:state_pressed="true" android:drawable="@color/yellow" />

<!--  Selected state (using d-pad) -->  
 <item android:state_focused="true" android:state_selected="true"
       android:state_pressed="false" android:drawable="@color/yellow" />

我动态生成行的Java代码:

private void createView(TableRow tr, TextView tv, String data, int rowId) {
    tv.setText(data);

    tv.setTextColor(Color.WHITE);
    tv.setPadding(20, 0, 0, 0);

    tr.setPadding(0, 1, 0, 1);
    //tr.setBackgroundColor(Color.TRANSPARENT);
    tr.setBackgroundDrawable(this.getResources().getDrawable(R.drawable.tablerowselector));
    tr.setId(rowId);
    tr.setClickable(true);
    tr.setFocusable(true); // Added thinking that if its not focusable then it can't be selected, but makes no difference
    tr.setOnClickListener(this);
    tr.addView(tv);
}

如果我处理clickListener事件,并根据设置prevRowSelectedcurrRowSelected逻辑设置行的背景颜色,则可行。但是如何使选择器工作以及为什么它不起作用?选择器不能按照我想要的方式工作吗?

由于

感谢任何帮助。

2 个答案:

答案 0 :(得分:0)

据我了解,你必须改变选择器。我找到了食谱here

答案 1 :(得分:0)

朋友,选择器,不像我预期的那样工作。因此,使用apprpriate逻辑和设置行的颜色以编程方式处理它。

感谢所有人。