我想为整个ripple
添加焦点RadioButton
效果,但是当我尝试将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
时则不会发生。现在,我的解决方法是为View
使用warpper RadioButton
类并为其设置背景。有没有办法获得图片中的背景,但是没有任何其他代码?谢谢。
答案 0 :(得分:0)
解决方案是将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>
在此之后,焦点将按比例显示,您可以根据需要向单选按钮添加背景