复选框按钮设置为null时的连锁反应问题:
使用的样式
.less
这是包含单选按钮的无线电组。
<style name="MyRow">
<item name="android:button">@null</item>
<item name="android:drawableRight">@drawable/abc_btn_radio_material</item>
<item name="android:drawableEnd">@drawable/abc_btn_radio_material</item>
<item name="android:layout_width">match_parent</item>
<item name="android:layout_height">wrap_content</item>
<item name="android:padding">@drawable/dafaultPadding</item>
当android:button属性设置为某个drawable时,Ripple动画按预期工作。 如果为null,则它在Marshmallow上具有此行为(行中间的涟漪)。
在棒棒糖中正常工作,除了它没有边界,并且波纹扩展到整个窗口。
在我的脑海中解决这个问题的唯一方法是为每个包含radiobutton左侧的textview的行创建自定义视图。 但是通过这种方式,我将不得不创建一个类似怪物的控制器(当我按下textview时选择复选框),我将失去无线电组的所有优点。
答案 0 :(得分:4)
尝试使用以下样式作为单选按钮:
<style name="RadioButton">
<item name="android:background">?selectableItemBackground</item>
<item name="android:button">@null</item>
<item name="android:drawableRight">?android:attr/listChoiceIndicatorSingle</item>
<item name="android:drawablePadding">@dimen/yourDrawablePadding</item>
<item name="android:padding">@dimen/buttonPadding</item>
</style>
首先,?selectableItemBackground
将解决您的涟漪问题。
还可以使用?android:attr/listChoiceIndicatorSingle
作为drawable,以便在选中/取消选中单选按钮时允许漂亮的素材动画。
您可以看到以下差异(Google Pixel XL,7.1.2):
答案 1 :(得分:0)
我有类似的问题。尝试在您的样式中设置<item name="android:background">?attr/selectableItemBackground</item>
或使用自定义波纹并进行设置。
答案 2 :(得分:0)
我对radiobutton也有同样的问题,尝试用android:paddingLeft =“10dp”添加android:button =“@ drawable / radiobutton_drawable”并删除android:drawableRight
答案 3 :(得分:0)
设置单选按钮背景透明
android:background="@android:color/transparent"