73

こんにちは、みんな、

Android の ListView に関して 2 つの質問があります。

  1. リストビューのフォーカスされた行の色を取得するにはどうすればよいですか? ListView.getSelector()メソッドを使用しようとしましたが、そのドキュメントによると、探しているものが得られるはずですが、色を取得する方法がわからない Drawable オブジェクトが返されます (可能であれば. ..)。

  2. リストビューのフォーカスされた行の色を設定するにはどうすればよいですか? ここで、リストビューでsetSelector()メソッドを使用して ColorDrawable オブジェクトを渡そうとしましたが、その結果、リストビューの背景全体がその色で塗りつぶされてしまいます...これは私が望んでいたものではありませんもちろん...

ありがとう!

4

2 に答える 2

89

リスト セレクター ドローアブルは、StateListDrawable選択、フォーカス、押された、無効など、リストの状態ごとに複数のドローアブルへの参照を含みます。

を使用してドローアブルを取得することはできますが、からgetSelector()特定のものを取得できるとは思いませんし、プログラムで から直接色を取得することもできないようです。DrawableStateListDrawableColorDrawable

StateListDrawable色の設定に関しては、上記の が必要です。属性を使用してリストにこれを設定し、android:listSelector次のように XML でドローアブルを定義できます。

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
  <item android:state_enabled="false" android:state_focused="true"
        android:drawable="@drawable/item_disabled" />
  <item android:state_pressed="true"
        android:drawable="@drawable/item_pressed" />
  <item android:state_focused="true"
        android:drawable="@drawable/item_focused" />
</selector>
于 2010-01-10T18:45:58.597 に答える
11

追加するには:@クリストファーの答えは、ドローアブルの代わりに色を使用している場合、(@ジョニーの正しいコメントによると)API 7/8では機能しません。(私のテストでは、クリストファーのようにドローアブルを使用するとうまくいきます)

色を使用する場合の 2.3 以下の修正は次のとおりです。

@Charles Harleyによると、2.3以下にバグがあり、リスト項目を色で埋めると、色がリスト全体に流れ出します。彼の修正は、shape必要な色を含むドローアブルを定義し、色の代わりにそれを使用することです。

色をセレクターとして使用するだけで、Android 2 をターゲットにしている (または少なくとも Android 2 を許可している) 場合は、このリンクを参照することをお勧めします。

于 2013-04-08T07:36:08.783 に答える