0

我用公共方法定义了一个自定义视图:

public void setHeight(int height) {
    //this.getLayoutParams().height = height; --- NOT WORKING
    this.setLayoutParams(new RelativeLayout.LayoutParams(LayoutParams.MATCH_PARENT, height)); // --- WORKING

当我使用注释掉代码时它不起作用(意味着调用此方法时视图高度没有改变),但是当我使用第二个短语时它按预期工作。

什么可以解释这种行为?

4

1 回答 1

3

这很容易 - 只需查看以下代码setLayoutParams()

 public void setLayoutParams(ViewGroup.LayoutParams params) {
     if (params == null) {
         throw new NullPointerException("Layout parameters cannot be null");
     }
     mLayoutParams = params;
     if (mParent instanceof ViewGroup) {
         ((ViewGroup) mParent).onSetLayoutParams(this, params);
     }
     requestLayout();
 }

看?requestLayout()它在设置布局参数后调用。

顺便说一句:Android 源代码可以在www.grepcode.com找到,而且通常很有帮助。

于 2013-02-24T09:56:55.667 回答