在不增大边框尺寸的前提下,增加带Drawable边框背景按钮的点击区域
你的核心问题是:给Button加padding会让带边框的shape背景Drawable跟着拉伸,打乱了原本文字与边框的间距逻辑。下面是两种简洁的解决方法:
方法一:用Margin替代Padding
Margin是控件外部的间距,不会影响背景Drawable的大小。直接给Button设置android:margin相关属性,就能在边框外侧留出空间:
<Button android:id="@+id/myButton" android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="@drawable/my_drawable" android:marginTop="8dp" android:marginBottom="8dp" android:marginLeft="8dp" android:marginRight="8dp" />
这种方式最简单,适合仅在布局中控制外侧间距的场景。
方法二:给Drawable套Inset标签
如果希望Drawable本身自带外侧间距(比如多处复用该Drawable时无需重复设置margin),可以把原shape包裹在<inset>标签内,通过inset属性定义外侧空间:
<inset xmlns:android="http://schemas.android.com/apk/res/android" android:insetTop="8dp" android:insetBottom="8dp" android:insetLeft="8dp" android:insetRight="8dp"> <shape> <stroke android:width="3dp" android:color="orange" /> <solid android:color="@color/white"/> <corners android:radius="4dp" /> <!-- 此处padding仍负责控制文字与边框的内部间距 --> <padding android:bottom="10dp" android:left="10dp" android:right="10dp" android:top="10dp" /> </shape> </inset>
修改后Button直接使用这个Drawable作为背景,wrap_content模式下会自动留出inset定义的外侧空间,背景不会被拉伸,内部文字与边框的间距依然由shape里的padding控制。
内容的提问来源于stack exchange,提问作者King Espii
相关产品推荐
相关产品推荐

