更改无边框按钮上的填充

时间:2017-03-13 20:01:17

标签: android android-layout android-studio button padding

我正在开发一个应用程序,但我遇到了一个小问题。我是无边框按钮样式(style="@style/Base.Widget.AppCompat.Button.Borderless.Colored")的忠实粉丝,但我无法更改按钮上的填充。为什么我需要更改填充?因为按钮的最小填充或宽度可能使它们看起来不舒服,或者只是浪费空间。当文本很少时可以看到这个问题:

enter image description here enter image description here

有上限的间距是指按钮的最小宽度为'#39; 我已经尝试以编程方式将填充设置为零并且使用XML填充填充但是没有任何作用。 我注意到AlertDialog没有这个问题:

enter image description here enter image description here

你可以在后台看到“封顶”'间距卡与Dialog相比。我的问题是,我如何自己减少填充?我不想为按钮编写自定义样式。

1 个答案:

答案 0 :(得分:5)

一种选择是将AlertDialog按钮样式应用于按钮:

style="@style/Widget.AppCompat.Button.ButtonBar.AlertDialog"

有关更详细的答案,此处文本周围的空间并不完全是填充。最小大小由样式中设置的其他属性决定,这就是为什么尝试调整填充不起作用,填充只会对更大的按钮(即更长的文本)产生影响。

如果我们深入探讨这些风格,它会揭示一种可能有用的技巧。 AlertDialog按钮样式如下所示:

<!-- Alert dialog button bar button -->
<style name="Widget.Material.Button.ButtonBar.AlertDialog" 
    parent="Widget.Material.Button.Borderless.Colored">
    <item name="minWidth">64dp</item>
    <item name="minHeight">@dimen/alert_dialog_button_bar_height</item>
</style>

因此,AlertDialog按钮实际上是从Borderless.Colored样式继承的,只调整了几个属性:minWidthminHeight

您也可以通过使自己的风格与上面的风格类似,或者直接在按钮上设置minWidth和/或minHeight来实现此目的。

<Button
    ....
    style="@style/Widget.AppCompat.Button.Borderless.Colored"
    android:minWidth="48dp"
    android:minHeight=... />

使用这些内容有望获得您正在寻找的结果,如果您将minWidthminHeight设置为0dp,那么它就会成为关于内容的全部内容填充。