在我的XML中,我有一个TableLayout,只有一个TableRow,即标题。我动态添加的其他所有行为TableRow设置BackgroundColor(LTGray)& TextColor for TextViews在其中。我也处理每一行上的点击事件。Android:关于TableRow选择的查询
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可以说黄色。所以如果第一行被选中,bgColor应该是黄色的。然后如果第三行被选中,第一行的颜色应该变成LTGray。
如果点击任何地方的行,那么所选的行(如果有的话)也应该被取消选择。为此,我必须添加主布局clickListener或者再次选择行并将其取消选择?
可以选择器(状态列表drawable)适用于这两种方式,或者我可以通过编程方式处理它。在我的Java代码中,我应该使用什么类型的Drawable来设置状态列表drawable?
我相信就像TableRow的其他组件一样,onClick也会照顾onTouch。如果我错了,请纠正我。因为想要触摸行也处理相同的功能。
达到目标的最佳方法是什么?任何帮助,高度赞赏。
@Gangus,但我如何动态地在我的java代码中设置选择器。我的意思是我必须设置一个叫做“R .....”的方法。我无法使用哪种方法来为我的TableRow设置它。 – Tvd
将该参考添加到答案中。 – Gangnus
@Gangus,我用上面的xml代码,并将setBackgroundDrawable()添加到我的TableRow中。结果:当我点击它时,它只是闪烁黄色,然后恢复正常,然后onclick事件被捕获,在该行的状态是:ROW CLICKED CAUGHT - Selected:false Pressed:true Focused:false 为什么黄色颜色不保留? – Tvd