我使用公共方法定义了一个自定义视图:
public void setHeight(int height) {
//this.getLayoutParams().height = height; --- NOT WORKING
this.setLayoutParams(new RelativeLayout.LayoutParams(LayoutParams.MATCH_PARENT, height)); // --- WORKING
当我使用注释掉代码时,它不起作用(意味着在调用此方法时视图高度不会改变),但是当我使用第二个短语时,它正在按预期工作。
什么可以解释这种行为?
答案 0 :(得分: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找到,而且通常很有帮助。