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