0

我正在创建一个子类化 RelativeLayout 的自定义布局。我希望它有固定的尺寸,例如,正方形是 250x250,矩形是 300x100,等等。为此,我添加了一个新的 xml 属性,type。在看到布局的类型后,我想调整布局的大小。我尝试从我的类构造函数中执行以下操作:

switch(type)
{
   case SQUARE:
       setLayoutParams(new MyLayout.LayoutParams(250,250));
       break;
   case RECTANGLE:
       setLayoutParams(new MyLayout.LayoutParams(300,100));
       break;
} 

然而,这并没有覆盖 xml 文件的高度和宽度。无论如何要从我的布局中实现我想要的,还是必须从父容器进行尺寸更改?

4

1 回答 1

5

如果你像这样覆盖宽度和高度,你应该覆盖 onMeasure,检查你是什么,并通过调用 onMeasure 内部的 setMeasuredDimension() 来设置正确的测量值。

于 2013-02-04T20:30:35.687 回答