我正在创建一个自定义布局,它是RelativeLayout的子类。我希望这有固定的尺寸,例如,一个正方形将是250x250,一个矩形将是300x100,等等。为此,我添加了一个新的xml属性,类型。在看到布局的类型后,我想调整布局大小。我尝试从类构造函数中执行以下操作:
switch(type)
{
case SQUARE:
setLayoutParams(new MyLayout.LayoutParams(250,250));
break;
case RECTANGLE:
setLayoutParams(new MyLayout.LayoutParams(300,100));
break;
}
然而,这并没有覆盖xml文件的高度和宽度。无论如何要从我的布局中实现我想要的,或者必须从父容器进行尺寸更改?
答案 0 :(得分:5)
如果你像这样覆盖宽度和高度,你应该覆盖onMeasure,检查你的身份,并通过在onMeasure上调用setMeasuredDimension()来设置正确的测量值。