我对何时使用setWidth和setHeight感到困惑?通常不起作用。
始终有效的是setLayoutParams。
这将起作用。
sampleButton = new Button(this);
sampleButton.setLayoutParams(new LinearLayout.LayoutParams(65, 65));
这是行不通的。
sampleButton = new Button(this);
sampleButton.setHeight(65);
sampleButton.setWidth(65);
也许有一些初始化可以使此代码起作用?
最佳答案
因此,只需查看Button
的源代码(它是TextView
的子类):
http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/2.1_r2/android/widget/TextView.java#TextView.setHeight%28int%29
这是setHeight的方法
public void setHeight(int pixels) {
mMaximum = mMinimum = pixels;
mMaxMode = mMinMode = PIXELS;
requestLayout();
invalidate();
}
现在在
onMeasure
方法中,在这里使用mMaximum
和mMaxMode
int unpaddedHeight = height - getCompoundPaddingTop() - getCompoundPaddingBottom();
if (mMaxMode == LINES && mLayout.getLineCount() > mMaximum) {
unpaddedHeight = Math.min(unpaddedHeight, mLayout.getLineTop(mMaximum));
}
看起来setheight并没有真正覆盖内部的height参数,而只是设置了用于布局的标志。
更改布局参数(当视图进行自身布局时实际引用的布局参数)似乎会通知视图它实际上需要那么高
TLDR; setHeight与文本的行高有关而不是与视图的高度有关
关于android - 什么时候使用setWidth,setHeight,setLayoutParams(new LinearLayout.LayoutParams(w,h))?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20132048/