私はこれに苦労しています。これは明らかに非常に単純な効果ですが、Androidでそれを行うための直感的な方法を見つけられませんでした。
リストビューがあり、背景画像をカスタマイズして、選択したアイテムが新しい背景ドローアブルを取得して強調表示されるようにしました。これは、Android:listSelector属性を設定して新しい状態を作成しますStateListDrawableすべての状態に使用するドロアブルを指定します。
ただし、各ListViewアイテムは、2つのTextViewがあるLinearLayoutです。私の目標は、親が選択または押されるたびに、背景のドロアブルと同時に、これらの子ビューのテキストの色を変更できるようにすることです。 ColorStateListがあることは知っていますが、設定は成功していません。
誰かがこのようなものを動作させることに成功していますか?
ありがとう。
ListViewが複数のビューを持つレイアウトで危険にさらされている場合、これらのどちらも答えになりません。子ビューを次のように設定する必要があります。
Android:duplicateParentState="true"
これで、上記で説明した他のメソッドを使用して、次のようなセレクターを使用してTextViewの色を宣言できます。
Android:textColor="@drawable/my_row_selector"
そして、あなたは気づいていると確信していますが、セレクタは次のように簡単にできます:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:Android="http://schemas.Android.com/apk/res/Android">
<item Android:state_pressed="true" Android:color="@color/white" />
<item Android:color="@color/black" />
</selector>
ご覧のとおり、@ color値が許可されています。お役に立てれば。
また、AdapterView.OnItemClickListenerと組み合わせてAndroid:state_pressedが使用されます。
あなたのtextviewプロパティで
Android:textColor="@color/text_selector"
res/color text_selector.xml内
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:Android="http://schemas.Android.com/apk/res/Android">
<item Android:state_pressed="true" Android:color="YOUR_CUSTOM_COLOR" />
<item Android:state_selected="true" Android:color="YOUR_CUSTOM_COLOR" />
<item Android:color="YOUR_CUSTOM_COLOR" />
</selector>
選択で機能させるには、次のコードを使用します。
<selector xmlns:Android="http://schemas.Android.com/apk/res/Android">
<item Android:state_pressed="true" Android:color="#fff"/>
<item Android:state_activated="true" Android:color="#fff"/>
<item Android:color="#000" />
</selector>
どうやらキーはstate_activated="true"
状態。
Android 11+(HoneyComb +)向けにアプリを展開する場合は、
Android:state_activated="true"
選択されたリストの状態。以前のバージョンでは、次の組み合わせを使用します。
Android:state_checked="true" Android:state_activated="true"
もちろん、含めることを忘れないでください
Android:duplicateParentState="true"
ビューは、親リストビューアイテムからアクティブ化/チェックされた状態を取得できます。
また、res/color
フォルダーにファイル「text_selector.xml」を追加し、次の行を追加します。
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:Android="http://schemas.Android.com/apk/res/Android">
<item Android:state_activated="true" Android:color="#f0f"/>
<item Android:state_pressed="true" Android:color="#f0f"/>
<item Android:color="#000"/>
</selector>
その後、TextViewで割り当てます。
Android:textColor="@color/text_selector"