私のListViewItem
が強調表示されている場合、テキストを白に変えたいです。これをどのように定義できますか?
<selector xmlns:Android="http://schemas.Android.com/apk/res/Android">
<item Android:state_focused="true" Android:color="@color/testcolor1"/>
<item Android:state_pressed="true" Android:state_enabled="false" Android:color="@color/testcolor2" />
<item Android:state_enabled="false" Android:color="@color/testcolor3" />
<item Android:color="@color/testcolor5"/>
</selector>
ファイルres/drawable/text_color.xmlを作成します。
<selector xmlns:Android="http://schemas.Android.com/apk/res/Android">
<item Android:state_focused="true" Android:state_pressed="false" Android:color="#ffffff" />
<item Android:state_focused="true" Android:state_pressed="true" Android:color="#ffffff" />
<item Android:state_focused="false" Android:state_pressed="true" Android:color="#ffffff" />
<item Android:color="#000000" />
</selector>
次に、@drawable/text_color
from xml(またはR.drawable.text_color
from code)をリストビューアイテムのテキストの色として使用します。
他の人が上で述べたことに加えて、私は以下のURLから取られた1つのポイントを強調したいと思います。
https://developer.Android.com/reference/Android/content/res/ColorStateList.html
注:状態仕様のリストは、XMLファイルに表示される順序で照合されます。このため、より具体的なアイテムをファイルの前に配置する必要があります。状態仕様のないアイテムは、どの状態セットとも一致すると見なされ、通常、デフォルトとして使用される最後のアイテムとして役立ちます。
セレクタータグの下部に向かってより広い条件があることが重要です。お役に立てれば!
これを試して...
まず、text_color.xml
ディレクトリに配置されたカラー状態リストres/color
を作成します。
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:Android="http://schemas.Android.com/apk/res/Android" xmlns:tools="http://schemas.Android.com/tools"
tools:ignore="MissingDefaultResource">
<item Android:color="#000000" Android:state_enabled="false"/>
<item Android:color="#FFFFFF"/>
</selector>
第二に、使用
getColorStateList(@NonNull Context context,
@ColorRes int id)
色状態リストを取得するメソッド。
textView.setTextColor(ContextCompat.getColorStateList(context, R.color.text_color))
3番目に、要件に基づいて有効(true)または無効(false)にします。
textView.isEnabled = true //when item is highlighted
ハッピーコーディング...