2012-01-19 2 views
0

私の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イベントで処理した場合、及びベース列の設定背景色prevRowSelectedcurrRowSelectedのロジックで動作します。しかしセレクターの作業を行う方法と、それが機能しない理由は何ですか?セレクタはそれを達成しようとしている方法で動作することはできませんか?

ありがとうございました

助けていただければ幸いです。

+0

ここには何も載せていません。 tablerowselectorはどこにありますか?セレクターをどこで変更していますか? – Gangnus

答えて

0

友人、セレクターは私が期待したとおりに動作しません。したがって、適切なロジックを使用して行の色を設定してプログラムで処理しました。

ありがとうございます。

+1

こんにちは、あなたはそれを動作させるためにあなたが行った変更を指定してください。 – Pallavi

0

私が理解しているように、セレクタを変更する必要があります。私はレシピを見つけましたhere

+0

私はすでにあなたがここで提供しているサイトを見てきました。それらのどれも私の要求に合致しません。別のStateListDrawablesを動的に作成する必要がある場合は、setBackground(カラー)だけを使用する方が簡単で簡単です。 – Tvd

関連する問題