Android:以编程方式覆盖按钮的最小高度

4
寻找如何减少按钮内边距时,我在 https://dev59.com/P2Ml5IYBdhLWcg3w_rKD#20323723 上发现应该在xml文件中将按钮的最小高度设置为0dp。是的,它对我有用。
问题是:我想通过编程方式创建我的按钮,但 setMinimumHeight(1) 和 setMinHeight(1) 都不起作用。如何做到?
顺便问一下,这两种方法有什么区别?
谢谢!
3个回答

19

只是在呼叫

btn.setMinHeight(0);
或者
btn.setMinimumHeight(0);

对我来说没有起作用。

当我调用这两种方法时,它就起作用了,像这样:

btn.setMinHeight(0);
btn.setMinimumHeight(0);

已经检查过多次,尽管看起来很奇怪,但情况肯定是如此。

按钮是通过编程创建的,没有XML,但它是自定义数字控件的一部分,该控件具有XML描述。

编辑:

setMinHeight由TextView定义,而setMinimumHeight由View定义。根据文档,使用两个值中较大的值,因此必须设置两个值。 XML中的minHeight属性对应于setMinimumHeight方法。 感谢@David Liu提供了这个澄清。


1
你不是唯一一个。我也发现如果不同时调用这两个方法,就无法覆盖自定义AppCompatButton中的最小高度。 - aaronmarino
3
对于未来遇到此问题的人们,setMinHeight是由TextView定义的,而setMinimumHeight是由View定义的。根据API文档,将使用这两个值中较大的值,因此必须同时设置这两个值。https://developer.android.com/reference/android/widget/TextView.html#setMinHeight(int) - David Liu
2
另外,XML中的minHeight属性对应于setMinimumHeight方法,而不是setMinHeight方法,所以请小心。 - David Liu

2

我认为你应该尝试使用 setPadding(0,0,0,0);并查看它是否适用于您。

至于 minHeight 和 minimumHeight 的区别,minHeight 是您可以在布局文件中使用的 XML 属性名称。setMinimumHeight 是相应的 View API 方法,可以完成同样的功能。


对我没用。 我已经使用了.setPadding( 0,0,0,0 ).setMinimumHeight( 0 );,但没有用。顺便说一下,我的按钮在一个android.support.v7.widget.GridLayout内,不确定是否有影响。 - EMalik

0

对于我来说,解决方案是

android:insetTop="0dp"
android:insetBottom="0dp"

在按钮的XML中


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接