Android RadioButton与container左侧padding调整
Posted on 2024-12-31 13:30 Capterlliar 阅读(29) 评论(0) 编辑 收藏 举报遇到了这个问题: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即可。此时的paddingLeft是真正的paddingLeft,即drawable到container之间的距离。还有据肉眼观察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"/>
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?