web-dev-qa-db-ja.com

選択/フォーカスリストビューアイテムのフォントの色を変更するには?

私はこれに苦労しています。これは明らかに非常に単純な効果ですが、Androidでそれを行うための直感的な方法を見つけられませんでした。

リストビューがあり、背景画像をカスタマイズして、選択したアイテムが新しい背景ドローアブルを取得して強調表示されるようにしました。これは、Android:listSelector属性を設定して新しい状態を作成しますStateListDrawableすべての状態に使用するドロアブルを指定します。

ただし、各ListViewアイテムは、2つのTextViewがあるLinearLayoutです。私の目標は、親が選択または押されるたびに、背景のドロアブルと同時に、これらの子ビューのテキストの色を変更できるようにすることです。 ColorStateListがあることは知っていますが、設定は成功していません。

誰かがこのようなものを動作させることに成功していますか?

ありがとう。

36
alfred

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が使用されます。

68
AndrewPK

あなたの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>
23
android.mu

選択で機能させるには、次のコードを使用します。

<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"状態。

11
Manuel Escrig

Android 11+(HoneyComb +)向けにアプリを展開する場合は、

Android:state_activated="true"

選択されたリストの状態。以前のバージョンでは、次の組み合わせを使用します。

Android:state_checked="true"
Android:state_activated="true"

もちろん、含めることを忘れないでください

Android:duplicateParentState="true"

ビューは、親リストビューアイテムからアクティブ化/チェックされた状態を取得できます。

2
Ivan Kravchenko

また、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"
1
CoolMind