遇到了这个问题:Android: Set margin to left side of radiobutton drawable
同时在这个情景下并不能修改controller内容,希望通过xml达到这个效果。一般是通过添加android:paddingLeft来达到效果,但在RadioButton中它修改的是radio和text之间的距离。
另一种方法是在外面套一个LinearLayout,但RadioGroup中只能直接放RadioButton,如果包一层LinearLayout会导致单选效果消失。通常来说自己包一个RadioButton然后手动setChecked会比较方便,但现在不能改controller。
解决方法:添加一个inset
radio_button.xml
<inset xmlns:android="http://schemas.android.com/apk/res/android" android:drawable="?android:attr/listChoiceIndicatorSingle" android:insetLeft="16dp"/>
然后
<RadioButton android:id="@+id/radio" android:button="@drawable/radio_button" android:layout_width="match_parent" android:layout_height="wrap_content" android:minHeight="72dp" android:paddingLeft="20dp" android:background="@drawable/background_top"/>
但会产生新的问题:RadioButton focus background shape
RadioButton ripple范围变了。可以考虑去除ripple,方法是添加android:background="@android:color/transparent",但我又需要给RadioButton一个背景。
解决方法:将button设为null,把原本的button设为android:drawableStart,然后调一调padding即可。据我肉眼观察listChoiceIndicatorSingle周围包的padding是4dp。
<RadioButton android:id="@+id/radio" android:button="@null" android:drawableStart="@drawable/radio_button" android:layout_width="match_parent" android:layout_height="wrap_content" android:minHeight="72dp" android:paddingLeft="20dp" android:background="@drawable/background_top"/>
标签:container,button,padding,RadioButton,添加,android,Android From: https://www.cnblogs.com/capterlliar/p/18643796