0

私はプログラムで作成したTextViewを持っていて、そのためのカラーセレクタxmlファイルを追加しました。セレクタファイルには、アクティブ化された状態とデフォルトの状態が1つだけあります。TextViewのセレクタは色を変更しません

<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
<item android:color="#ff867f"/> 
<item android:color="#c50e29" android:state_activated="true"/> 
</selector> 

アクティビティでTextViewをアクティブ化しても、テキストの色は変更されず、デフォルトの色が表示されます。

 tv_header_exam.setActivated(true); 
     tv_text_exam.setActivated(true); 
     tv_header_exam.setTextColor(getResources().getColor(R.color.exam)); 
     tv_text_exam.setTextColor(getResources().getColor(R.color.exam)); 

ここに何かがありますか?

編集:私はまた、次のセレクタでそれを試してみた

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
<item android:color="#c50e29" android:state_activated="true"/> 
<item android:color="#ff867f" android:state_activated="false"/> 
</selector> 
+0

動作しません。 tv_header_exam.setActivatedの前にtv_header_exam.setTextColorを呼び出そうとしましたか?デフォルト状態のテキストの色は –

+0

ですか? –

+0

セレクタをTextViewの背景に配置するのを忘れましたか? – RonTLV

答えて

0

利用getColorStateList()の代わりgetColor()

あなたは< API 23をサポートしている場合、あなたはヘルパーメソッドを使用することができ、GETCOLORの

ContextCompat.getColorStateList(context, R.color.your_selector); 

のJavadoc():

は、特定のリソースIDに関連付けられた色の整数を返します。 リソースが複雑なColorStateListを保持している場合、セットのデフォルトの が返されます。 getColorStateListの

のJavaDoc():

特定のリソースIDに関連付けられた色状態リストを返します。 リソースには、単一の生のカラー値か、複数の可能な色を保持する複合体 {ColorStateList}を含めることができます。

+0

これは解決策です。 getColorStateList()で動作します。ありがとうございました –

関連する問題