2012-01-19 55 views
0

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

我选择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逻辑时,可以工作。但是如何使选择器工作,为什么它不工作?不能按照我想要实现它的方式工作吗?

谢谢

任何帮助表示赞赏。

+0

你还没有放在这里。你在哪里有选择器?你在哪里改变选择器? – Gangnus

回答

0

朋友,选择器,没有按预期工作。因此,使用apprpriate逻辑和设置行的颜色来编程处理它。

感谢所有。

+1

嗨,你可以指定你做了什么改变,使其工作? – Pallavi

0

据我所知,你必须改变选择器。我发现食谱here

+0

我已经浏览了您在此提供的网站。它们都不符合我的要求。如果我必须动态地创建不同的StateListDrawables,那么只需使用setBackground(color)听起来更简单和容易。 – Tvd

相关问题