如何创建无默认内边距的按钮?已尝试minWidth/minHeight未生效
解决Android按钮默认无内边距的问题
嘿,我明白你想创建一个完全没有内边距的按钮,只设置minWidth和minHeight没生效的原因是——Android的Material风格按钮(现在默认的Button组件)除了这两个属性外,还自带了内边距(padding)和inset(额外的内部间距),这些都会让按钮看起来有多余的空间。下面给你几种可行的解决方案:
方案1:直接在Button标签中覆盖所有相关属性
如果只是单个按钮需要无内边距,直接在XML里把这些属性都设为0就好:
<Button android:id="@+id/myButton" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="我的无内边距按钮" android:padding="0dp" android:minWidth="0dp" android:minHeight="0dp" app:insetTop="0dp" app:insetBottom="0dp" app:insetLeft="0dp" app:insetRight="0dp"/>
android:padding="0dp":去掉按钮文本和边框之间的内边距android:minWidth/android:minHeight="0dp":取消按钮的最小尺寸限制app:inset*="0dp":MaterialButton特有的属性,去掉按钮本身的内部额外间距(这个是很多人忽略的点!)
方案2:自定义样式批量复用
如果多个按钮都需要无内边距,建议创建一个自定义样式,避免重复代码:
<!-- 在styles.xml中定义样式 --> <style name="NoPaddingButtonStyle" parent="Widget.MaterialComponents.Button"> <item name="android:padding">0dp</item> <item name="android:minWidth">0dp</item> <item name="android:minHeight">0dp</item> <item name="insetTop">0dp</item> <item name="insetBottom">0dp</item> <item name="insetLeft">0dp</item> <item name="insetRight">0dp</item> </style>
然后在Button中引用这个样式:
<Button android:id="@+id/anotherButton" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="另一个无内边距按钮" style="@style/NoPaddingButtonStyle"/>
特殊情况:如果使用的是AppCompatButton或旧版Button
如果你没有用Material Design组件,而是AppCompatButton或者普通Button,可能还需要去掉默认的背景drawable(因为默认背景本身带内边距),可以设置android:background="@null",或者自定义一个不带内边距的shape背景。
这样调整后,按钮就会完全贴合你的文本内容,没有多余的内边距啦!
内容的提问来源于stack exchange,提问作者SametSahin
相关产品推荐
相关产品推荐

