更改无边框按钮的内边距

问题描述 投票:0回答:2

我正在开发一个应用程序,但遇到了一个小问题。我非常喜欢无边框按钮样式 (

style="@style/Base.Widget.AppCompat.Button.Borderless.Colored"
),但我无法更改按钮上的填充。为什么我需要更改填充?因为按钮的最小填充或宽度可能会使它们看起来不舒服,或者只是浪费空间。当文字很少时就会出现这个问题:

enter image description here enter image description here

上限间距是指按钮的最小宽度被“上限”的间距。 我尝试过以编程方式将填充设置为零并弄乱 XML 中的填充,但没有任何效果。 我注意到

AlertDialog
没有这个问题那么糟糕:

enter image description here enter image description here

您可以在背景中看到与对话框相比的“上限”间距卡。我的问题是,我怎样才能减少填充呢?我不想为按钮编写自定义样式。

android android-layout android-studio button padding
2个回答
6
投票

一种选择是将

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
样式,仅调整了几个属性:
minWidth
minHeight

您也可以通过制作与上面类似的自己的样式来执行此操作,或者直接在按钮上设置

minWidth
和/或
minHeight

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

尝试这些将有望获得您正在寻找的结果,如果您将

minWidth
minHeight
设置为 0dp,那么它就变成了内容和填充。


0
投票

要删除额外的水平填充,只需设置:

android:minWidth="0dp"

© www.soinside.com 2019 - 2024. All rights reserved.