7

内部にカスタム要素を持つListViewがあります。これらの要素ごとにセレクターを作成したいと思います。セレクター自体は、アイテムがホバー/選択されている間など、背景色のみを処理する必要があるため、それほど複雑にはなりません。ただし、これらのセレクターの色は外部ソースから取得する必要があります。つまり、変数から色を設定できる必要があるため、一部の単純な静的コードでは機能しません。

  1. プログラムですべてのパラメータを使用してセクターを定義するにはどうすればよいですか?
  2. そのセレクターをプログラムで特定のビューに割り当てる方法は?
4

2 に答える 2

13
StateListDrawable states = new StateListDrawable();
int yourBackgroundColor = Color.parseColor("#FFFFFF");
// Add specific color when your view has state 'pressed'
states.addState(new int[] {android.R.attr.state_pressed}, new ColorDrawable(yourBackgroundColor));
// Add other states wanted and associated drawable
// ...
// As StateListDrawable extend Drawable, you can use it as background for exemple       
yourView.setBackground(states);

StateListDrawableに必要な数の状態を追加できます(使用可能な状態のリスト:http://developer.android.com/guide/topics/resources/color-list-resource.html 。状態の組み合わせごとに、特定の動的な描画可能を設定できます。

ドローアブルに一致する複数の状態を指定できます

states.addState(new int[] { -android.R.attr.state_focused,
                            android.R.attr.state_selected,
                            -android.R.attr.state_pressed}, ColorDrawable(yourBackgroundColor));

今回は、ビューがフォーカスされておらず、選択されていて、押されていない場合に色が適用されます。

于 2012-10-05T21:33:26.690 に答える
1
StateListDrawable states = new StateListDrawable();
int yourBackgroundColor = Color.parseColor("#FFFFFF");
// Add specific color when your view has state 'pressed'
states.addState(new int[] {android.R.attr.state_pressed}, 
        new ColorDrawable(yourBackgroundColor));
// Add other states wanted and associated drawable
// ...
// As StateListDrawable extend Drawable, you can use it as background for exemple       
yourView.setBackground(states);
于 2016-11-23T04:28:51.287 に答える