更改无边框按钮的填充
Change Padding on Borderless Buttons
我正在开发一个应用程序,但 运行 遇到了一个小问题。我是无边框按钮样式 (style="@style/Base.Widget.AppCompat.Button.Borderless.Colored"
) 的超级粉丝,但我无法更改按钮上的填充。为什么我需要更改填充?因为按钮的最小填充或宽度会让它们看起来不愉快,或者只是浪费 space。这个问题在文本很少的情况下会出现:
上限间距是按钮的最小宽度为 'capped' 的间距。
我曾尝试以编程方式将填充设置为零并弄乱 XML 中的填充,但没有任何效果。
我注意到 AlertDialog
没有这个问题那么糟糕:
您可以在背景中看到 'Capped' 与对话框相比的间距卡片。我的问题是,我怎样才能自己减少填充?我宁愿不必为按钮编写自定义样式。
一种选择是将 AlertDialog
按钮样式应用于您的按钮:
style="@style/Widget.AppCompat.Button.ButtonBar.AlertDialog"
要获得更详细的答案,此处文本周围的 space 并非完全是这样的填充。最小尺寸由样式中设置的其他属性决定,这就是为什么尝试调整填充不起作用的原因,填充仅开始对更大的按钮(即更长的文本)产生影响。
如果我们深入研究样式,它会揭示一种可能有用的技术来提供帮助。 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
and/or minHeight
。
<Button
....
style="@style/Widget.AppCompat.Button.Borderless.Colored"
android:minWidth="48dp"
android:minHeight=... />
尝试这些将有望获得您想要的结果,如果您将 minWidth
和 minHeight
设置为 0dp,那么它就变成了内容的全部和填充。
我正在开发一个应用程序,但 运行 遇到了一个小问题。我是无边框按钮样式 (style="@style/Base.Widget.AppCompat.Button.Borderless.Colored"
) 的超级粉丝,但我无法更改按钮上的填充。为什么我需要更改填充?因为按钮的最小填充或宽度会让它们看起来不愉快,或者只是浪费 space。这个问题在文本很少的情况下会出现:
上限间距是按钮的最小宽度为 'capped' 的间距。
我曾尝试以编程方式将填充设置为零并弄乱 XML 中的填充,但没有任何效果。
我注意到 AlertDialog
没有这个问题那么糟糕:
您可以在背景中看到 'Capped' 与对话框相比的间距卡片。我的问题是,我怎样才能自己减少填充?我宁愿不必为按钮编写自定义样式。
一种选择是将 AlertDialog
按钮样式应用于您的按钮:
style="@style/Widget.AppCompat.Button.ButtonBar.AlertDialog"
要获得更详细的答案,此处文本周围的 space 并非完全是这样的填充。最小尺寸由样式中设置的其他属性决定,这就是为什么尝试调整填充不起作用的原因,填充仅开始对更大的按钮(即更长的文本)产生影响。
如果我们深入研究样式,它会揭示一种可能有用的技术来提供帮助。 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
and/or minHeight
。
<Button
....
style="@style/Widget.AppCompat.Button.Borderless.Colored"
android:minWidth="48dp"
android:minHeight=... />
尝试这些将有望获得您想要的结果,如果您将 minWidth
和 minHeight
设置为 0dp,那么它就变成了内容的全部和填充。