次のようなtextColor
のRadioButton
のセレクターがあります。
<selector xmlns:Android="http://schemas.Android.com/apk/res/Android">
<item Android:state_selected="true" Android:color="#fff"/>
<item Android:state_focused="true" Android:color="#f00"/>
<item Android:state_pressed="true" Android:color="#0f0"/>
<item Android:state_focused="false" Android:state_pressed="false" Android:color="#00f"/>
</selector>
選択したRadioButton
は他のものとは異なる色になると予想しました。
ただし、すべてのRadioButton
sには青色のテキスト(Android:state_focused = "false" Android:state_pressed = "false"を使用)があり、選択されているものも含まれています。
私は何を間違えていますか?
間違ったセレクターを使用しているようです。ドキュメントでは、選択について次のように説明しています。
状態が変化するたびに、状態リストが上から下に走査され、現在の状態に一致する最初のアイテムが使用されます。選択は「最適一致」ではなく、単に状態の最小基準を満たす最初のアイテムに基づきます。 。
だから、順番に:
異なる状態を見たい場合は、これらを試してください:
<selector xmlns:Android="http://schemas.Android.com/apk/res/Android">
<item Android:state_pressed="true" Android:color="#0f0"/>
<item Android:state_checked="true" Android:color="#fff"/>
<item Android:color="#00f"/>
</selector>
上記をテストしましたが、すべての色が適切に表現されていることがわかります。
Androidによると。 https://developer.Android.com/guide/topics/resources/color-list-resource.html 。 https://developer.Android.com/reference/Android/content/res/ColorStateList.html
「res」ディレクトリに「color」というフォルダを作成し、radiobuttonstate.xmlという新しいファイルを作成する必要があります。たとえば、次のようになります。
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:Android="http://schemas.Android.com/apk/res/Android">
<item Android:state_focused="true"
Android:color="YOUR COLOR" />
<item
Android:state_pressed="true"
Android:state_enabled="false"
Android:color="YOUR COLOR" />
<item Android:color="YOUR COLOR"
Android:state_checked="true"/>
<item
Android:state_enabled="false"
Android:color="YOUR COLOR" />
<item Android:color="YOUR COLOR" />
</selector>
次に、ラジオボタンで、以前に定義したカラーリストをAndroid:textColor属性で定義します。
<RadioButton
Android:id="@+id/radio_H"
Android:layout_width="30dp"
Android:layout_height="30dp"
Android:text="@string/string_example"
Android:textColor="@color/radiobuttonstate"
Android:textAlignment="center" />
@GrantAmosが提供する答えは完璧で、うまく機能しています。 XMLを介してテキストカラーセレクターを使用する場合は、このコードを使用してください。
Android:textColor="@color/textview_selector"
ただし、プログラムでセレクターを設定する場合は、次のコードを使用します-
radioButton.setTextColor(ContextCompat.getColorStateList(getContext(), R.color.textview_selector));
それが誰かの時間を節約することを願っています。
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:Android="http://schemas.Android.com/apk/res/Android">
<item Android:state_checked="false" Android:drawable="@color/dark_grey"/>
<item Android:state_checked="true" Android:drawable="@color/topic_green"/>
</selector>
これは私のために動作します。実際にAndroid:color = "@ color/dark_grey"を使用するとき。うまくいきませんでした。しかし、私がドローアブルに変更したときはそうしました。
ラジオボタンのチェック済みプロパティを使用します。
<selector xmlns:Android="http://schemas.Android.com/apk/res/Android">
<item Android:state_pressed="true" Android:color="#0f0"/>
<item Android:state_checked="true" Android:color="#fff"/>
<item Android:color="#00f"/>
</selector>