如何减少Android按钮对象中文本周围的内部填充?

8 浏览
0 Comments

如何减少Android按钮对象中文本周围的内部填充?

我目前有一个按钮,它的样式如上图第一张图片。我该如何减小按钮内部文本周围的间距(使其更像第二张图片)?

布局的宽度和高度设置如下:

android:layout_width="match_parent"
android:layout_height="wrap_content"

自定义样式形状的参数为:


其余部分只是颜色属性和圆角值。

为了明确,我希望按钮的边框更贴近“登录”文本。

非常感谢您的帮助和反馈。谢谢。

0
0 Comments

问题的原因:原问题中提到的尝试解决内部文本内边距的方法并不起作用。

解决方法:尝试在自定义的shape.xml文件中进行以下更改,并可以在按钮的xml中进行其他更改。


android:layout_width="wrap_content"
android:layout_height="wrap_content"

注意:原问题中的方法并不起作用。

0
0 Comments

问题的原因是在Material Components Library中,MaterialButton默认具有insetBottom和insetTop属性,其值为6dp,导致按钮内部文本周围存在内边距。为了解决这个问题,可以通过在布局中或样式中修改这些属性的值来减少内边距。

在布局中修改属性的值:


在样式中修改属性的值:


以上是解决问题的方法,通过将insetTop和insetBottom属性的值设置为0dp,可以减少按钮内部文本周围的内边距。

具体示例如下图所示:

[图片1](https://i.stack.imgur.com/0cNSH.png)

[图片2](https://i.stack.imgur.com/zV8HF.png)

0
0 Comments

问题的出现原因:

在Android中,按钮对象内部的文本周围的"padding"实际上并不是真正的padding。默认的Widget.Button样式包含一个minHeight属性,而不是padding属性。这导致了在调整padding时出现问题。

解决方法:

要调整按钮文本周围的padding,需要更改按钮的minHeight属性。通过更改minHeight属性,可以实现预期的padding调整。

具体操作示例:

1. 在布局文件中的Button标签中添加android:minHeight="40dip"属性,例如:

2. 在样式文件中的Widget.Holo.Button样式中添加android:minHeight属性,例如:


注意:如果使用的主题不是"holo"主题,可能需要在不同的位置添加minHeight属性。

补充:

- 如果遇到宽度的类似问题,可以尝试设置android:minWidth="0dp",但是对于按钮中的长文本,可能需要设置android:paddingRight和android:paddingLeft以避免布局问题。

- Widget.Button没有minHeight属性,它是在主题按钮中定义的。如果使用的主题不同于"holo"主题,可能需要在不同的位置查找minHeight属性。

- 使用MaterialButton时,即使设置了height和minHeight为相同的值,仍然会存在padding。这是因为按钮背景的高度会小于指定的高度。可以通过添加android:insetTop="0dp"和android:insetBottom="0dp"属性来解决这个问题,这样可以最终去除padding并将按钮背景的高度设置为指定的高度。

0