gpt4 book ai didi

android - 什么时候使用 setWidth、setHeight、setLayoutParams(new LinearLayout.LayoutParams(w,h))?

转载 作者:行者123 更新时间:2023-11-30 03:15:59 27 4
gpt4 key购买 nike

我对何时使用 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方法中,这里使用了mMaximummMaxMode

    int unpaddedHeight = height - getCompoundPaddingTop() - getCompoundPaddingBottom();
if (mMaxMode == LINES && mLayout.getLineCount() > mMaximum) {
unpaddedHeight = Math.min(unpaddedHeight, mLayout.getLineTop(mMaximum));
}

看起来 setheight 并没有真正覆盖内部高度参数,更多只是为布局设置标志。

更改布局参数(当 View 自行布局时实际引用的参数)似乎通知 View 它实际上需要那么高

TLDR; setHeight 与文本的行高有关,而不是与 View 的高度有关

关于android - 什么时候使用 setWidth、setHeight、setLayoutParams(new LinearLayout.LayoutParams(w,h))?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20132048/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com