web-dev-qa-db-ja.com

TextViewのColorStateListを定義する方法は?

私の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>
31
Sheehan Alam

ファイル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)をリストビューアイテムのテキストの色として使用します。

68

他の人が上で述べたことに加えて、私は以下のURLから取られた1つのポイントを強調したいと思います。

https://developer.Android.com/reference/Android/content/res/ColorStateList.html

注:状態仕様のリストは、XMLファイルに表示される順序で照合されます。このため、より具体的なアイテムをファイルの前に配置する必要があります。状態仕様のないアイテムは、どの状態セットとも一致すると見なされ、通常、デフォルトとして使用される最後のアイテムとして役立ちます。

セレクタータグの下部に向かってより広い条件があることが重要です。お役に立てれば!

1
Rakesh Pillai

これを試して...

まず、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

ハッピーコーディング...