如果你想同时改变文字和圆圈的颜色,请按照以下步骤进行操作。
1.在下面添加样式
<style name="radioButton" parent="AppTheme">
<item name="colorControlNormal">#0f0</item>
<item name="colorAccent">#f00</item>
</style>
2.将此选择器.xml添加到drawable中。
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:color="#0f0" android:state_pressed="true" />
<item android:color="#f00" android:state_checked="true" />
<item android:color="#0f0" />
</selector>
3.为RadioButton添加选择器和样式。
<RadioButton
android:id="@+id/one"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginRight="16dp"
android:text="select"
android:textColor="@drawable/selector"
android:textSize="12sp"
android:theme="@style/radioButton"
app:useMaterialThemeColors="false" />
完整的代码。
<RadioGroup
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="left"
android:layout_margin="16dp"
android:checkedButton="@+id/one"
android:layoutDirection="ltr"
android:orientation="horizontal">
<RadioButton
android:id="@+id/one"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginRight="16dp"
android:text="select"
android:textColor="@drawable/selector"
android:textSize="12sp"
android:theme="@style/radioButton"
app:useMaterialThemeColors="false" />
<RadioButton
android:id="@+id/two"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="not select"
android:textColor="@drawable/selector"
android:textSize="12sp"
android:theme="@style/radioButton"
app:useMaterialThemeColors="false" />
</RadioGroup>
和结果
注。 我使用的是谷歌材料
radiobutton.setOnCheckedChangeListener { buttonView, isChecked ->
if(radiobutton.isChecked())
{
// Changing radio button 1 color on checked.
radiobutton.setTextColor(Color.parseColor("#00ff00"))}}
该 MaterialRadioButton
默认使用一个选择器,其中颜色基于 colorOnSurface
当 unchecked
和 colorControlActivated
当 checked
在您的应用程序主题中定义。
您可以在您的应用程序主题中使用 android:theme
属性.类似于。
<com.google.android.material.radiobutton.MaterialRadioButton
...
android:theme="@style/ThemeOverlay.RadioButton"/>
与。
<style name="ThemeOverlay.RadioButton" parent="">
<item name="colorControlActivated">@color/.....</item>
<item name="colorOnSurface">@color/.....</item>
<item name="colorSurface">@color/.....</item>
</style>
你也可以设置 useMaterialThemeColors
归于 false
<com.google.android.material.radiobutton.MaterialRadioButton
...
useMaterialThemeColors="false"/>
并应用自定义选择器,使用 CompoundButtonCompat#setButtonTintList
.
用类似选择器。
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:color="..." android:state_enabled="true" android:state_checked="true" />
<item android:color="..." android:state_enabled="true" android:state_checked="false" />
<item android:color="..." android:state_enabled="false" android:state_checked="true" />
<item android:color="..." android:state_enabled="false" android:state_checked="false" />
</selector>