Android 何时使用setWidth、setHeight、setLayoutParams(新的LinearLayout.LayoutParams(w,h))?
我不知道什么时候使用setWidth和setHeight?它通常不起作用 始终有效的是setLayoutParams 这会奏效的Android 何时使用setWidth、setHeight、setLayoutParams(新的LinearLayout.LayoutParams(w,h))?,android,button,Android,Button,我不知道什么时候使用setWidth和setHeight?它通常不起作用 始终有效的是setLayoutParams 这会奏效的 sampleButton = new Button(this); sampleButton.setLayoutParams(new LinearLayout.LayoutParams(65, 65)); 这是行不通的 sampleButton = new Button(this); sampleButton.setHeight(65
sampleButton = new Button(this);
sampleButton.setLayoutParams(new LinearLayout.LayoutParams(65, 65));
这是行不通的
sampleButton = new Button(this);
sampleButton.setHeight(65);
sampleButton.setWidth(65);
或者这段代码可能有一些初始化功能?因此,请查看
按钮的源代码(它是文本视图的子类)
:
下面是设置高度的方法
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并没有真正覆盖内部高度参数,更多的只是为布局设置标志
更改布局参数(视图布局时实际引用的参数)似乎会通知视图它实际上需要达到该高度
TLDR;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并没有真正覆盖内部高度参数,更多的只是为布局设置标志
更改布局参数(视图布局时实际引用的参数)似乎会通知视图它实际上需要达到该高度
TLDR;setHeight与文本行高的关系大于与视图高度的关系