RadioButton 焦点背景形状
RadioButton focus background shape
我想为整个 RadioButton
添加焦点 ripple
效果,但是当我尝试将 ripple
效果与突出显示一起使用时,发生了一些奇怪的事情。图中左边是我得到的,右边是我想要的:
background_drawable:
<ripple xmlns:android="http://schemas.android.com/apk/res/android"
android:color="@color/colorAccent">
<item android:id="@android:id/mask">
<shape android:shape="rectangle">
<solid android:color="@android:color/white"/>
</shape>
</item>
</ripple>
styles.xml
<style name="RadioButtonStyle" parent="Widget.AppCompat.CompoundButton.RadioButton">
<item name="android:background">@drawable/radio_button_background</item>
</style>
只有当我尝试使用 ripple
效果时才会发生这种情况,如果我尝试仅使用 shape
并以 selector
和 state_focused=true
作为背景时不会发生这种情况。现在我的解决方法是对 RadioButton
使用 warpper View
class 并在其中设置背景。有什么方法可以像图片中那样获得背景但没有任何额外的代码?谢谢。
解决方法是将 button
属性设置为 null
并在单选按钮的样式中设置 drawableStart
属性:
<style name="RadioButtonStyle" parent="Widget.AppCompat.CompoundButton.RadioButton">
<item name="android:button">@null</item>
<item name="android:drawableStart">@drawable/radio_button_selector</item>
<item name="android:drawablePadding">4dp</item>
<item name="android:background">@drawable/radio_button_background</item>
<item name="android:gravity">center_vertical</item>
<item name="android:paddingStart">8dp</item>
<item name="android:paddingEnd">8dp</item>
<item name="android:paddingTop">11dp</item>
<item name="android:paddingBottom">11dp</item>
</style>
<style name="AppTheme" parent="Theme.AppCompat.NoActionBar">
<!-- Customize your theme here. -->
<item name="radioButtonStyle">@style/RadioButtonStyle</item>
<item name="android:radioButtonStyle">@style/RadioButtonStyle</item>
</style>
之后焦点将按方面工作,您可以根据需要向单选按钮添加背景
我想为整个 RadioButton
添加焦点 ripple
效果,但是当我尝试将 ripple
效果与突出显示一起使用时,发生了一些奇怪的事情。图中左边是我得到的,右边是我想要的:
background_drawable:
<ripple xmlns:android="http://schemas.android.com/apk/res/android"
android:color="@color/colorAccent">
<item android:id="@android:id/mask">
<shape android:shape="rectangle">
<solid android:color="@android:color/white"/>
</shape>
</item>
</ripple>
styles.xml
<style name="RadioButtonStyle" parent="Widget.AppCompat.CompoundButton.RadioButton">
<item name="android:background">@drawable/radio_button_background</item>
</style>
只有当我尝试使用 ripple
效果时才会发生这种情况,如果我尝试仅使用 shape
并以 selector
和 state_focused=true
作为背景时不会发生这种情况。现在我的解决方法是对 RadioButton
使用 warpper View
class 并在其中设置背景。有什么方法可以像图片中那样获得背景但没有任何额外的代码?谢谢。
解决方法是将 button
属性设置为 null
并在单选按钮的样式中设置 drawableStart
属性:
<style name="RadioButtonStyle" parent="Widget.AppCompat.CompoundButton.RadioButton">
<item name="android:button">@null</item>
<item name="android:drawableStart">@drawable/radio_button_selector</item>
<item name="android:drawablePadding">4dp</item>
<item name="android:background">@drawable/radio_button_background</item>
<item name="android:gravity">center_vertical</item>
<item name="android:paddingStart">8dp</item>
<item name="android:paddingEnd">8dp</item>
<item name="android:paddingTop">11dp</item>
<item name="android:paddingBottom">11dp</item>
</style>
<style name="AppTheme" parent="Theme.AppCompat.NoActionBar">
<!-- Customize your theme here. -->
<item name="radioButtonStyle">@style/RadioButtonStyle</item>
<item name="android:radioButtonStyle">@style/RadioButtonStyle</item>
</style>
之后焦点将按方面工作,您可以根据需要向单选按钮添加背景