ボタンを子として持つlinearLayoutがあります。ボタンの背景がフォーカスされたときに変更する必要があります。ボタンはタッチモードでフォーカス可能です。
次のセレクター xml をボタンに設定しました。
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_focused="true"
android:drawable="@drawable/tile_focused" />
<item android:drawable="@drawable/tile" /> <!-- default -->
</selector>
アップデート
if (layout == null) {
layout = new LinearLayout(this);
RelativeLayout.LayoutParams rlp = new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT);
rlp.addRule(RelativeLayout.BELOW, R.id.toplogo);
layout.setLayoutParams(rlp);
layout.setId(wordLayoutID);
layout.setBackgroundColor(Color.WHITE);
mainLayout.addView(layout, rlp);
}
Drawable tileBG = getResources().getDrawable(R.drawable.selector_tile);
for (int i = 0; i < word.length(); i++) {
Button btntile = new Button(this);
LinearLayout.LayoutParams rlp = new LinearLayout.LayoutParams(40, 40);
btntile.setId(inputViewsIds+i);
btntile.setBackgroundDrawable(tileBG);
btntile.setFocusableInTouchMode(true);
layout.addView(btntile, rlp);
}
問題は、1 つのボタンにフォーカスを設定すると、すべてのボタンの背景が「tile_focused」に変わることです。問題はセレクターxmlにあると思います。ここで何が問題なのですか?