私のXMLにTAbleLayoutが1行、すなわちte見出し行で表示されています。他のすべての行、私は動的に追加します。私はそれを触って&をクリックして行を選択したい。各行にclickListenerを追加し、クリックイベントをトラップできるようになりました。しかし、マウスが押されたり押されたりすると色の変化が見られ、やはり正常な色になります。他の行をクリックするか他の場所をクリックして選択した行を無効にするまで、色を変更したままにしておきたい。Android:Selectorが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);
}
IはclickListenerイベントで処理した場合、及びベース列の設定背景色prevRowSelected
とcurrRowSelected
のロジックで動作します。しかしセレクターの作業を行う方法と、それが機能しない理由は何ですか?セレクタはそれを達成しようとしている方法で動作することはできませんか?
ありがとうございました
助けていただければ幸いです。
ここには何も載せていません。 tablerowselectorはどこにありますか?セレクターをどこで変更していますか? – Gangnus