Android:关于TableRow选择的查询

时间:2012-01-19 08:33:06

标签: android colors selection state tablerow

在我的XML中,我有一个只有1个TableRow的TableLayout,即标题。我添加的其他所有行动态设置TableRow&的BackgroundColor(LTGray)。 TextView中的TextColor。我还处理每一行的点击事件。

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

    //tv.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
    tv.setTextColor(Color.BLACK);
    tv.setPadding(20, 0, 0, 0);

    tr.setPadding(0, 1, 0, 1);
    tr.setBackgroundColor(Color.LTGRAY);
    tr.setId(rowId);
    tr.setClickable(true);
    tr.setOnClickListener(this);
    tr.addView(tv);
}

注册选择: 我想改变TableRow的BackgroundColor让我们说黄色。因此,如果选择第1行,则bgColor应为黄色。然后,如果选择第3行,则第1行的颜色应变为LTGray。

如果单击Rows中的任何位置,则也应取消选择所选行(如果有的话)。为此,我必须添加主要布局clickListener或再次选择行并取消选择?

选择器(状态列表drawable)可以用于这两种方式,或者我以编程方式处理它。我应该在我的Java代码中使用什么类型的Drawable来设置setBackgroundDrawable以获得statelist drawable?

我相信像TableRow的其他组件也onClick也会照顾onTouch。如果我错了,请纠正我。想要通过触摸行来处理相同的功能。

实现目标的最佳方法是什么?任何帮助都非常感谢。

3 个答案:

答案 0 :(得分:0)

不要在代码中更改它!请改用选择器。

Taken from here:

<?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="@android:color/yellow" /> 
    <!--  Selected state (using d-pad) -->
     <item android:state_focused="true" android:state_selected="true"         android:state_pressed="false" android:drawable="@android:color/yellow" />
 </selector> 

不是那么彻底,但更有用的答案是here

动态更改选择器here

答案 1 :(得分:0)

好的,比使用OnFocusChangeListener。它抓住了获得和失去焦点。

onFocusChange(View v, boolean hasFocus) 

当视图的焦点状态发生变化时调用。

答案 2 :(得分:0)

谢谢朋友们,

我在代码本身管理它。为添加的每一行添加了单击侦听器,并相应地处理所选行和未选行的颜色。