0

RelativeLayout をサブクラス化するカスタム レイアウトを作成しています。これを固定サイズにしたいと思います。たとえば、正方形は 250x250、長方形は 300x100 などです。これを実現するために、新しい xml 属性 type.xml を追加しました。レイアウトがどのようなタイプになるかを確認した後、レイアウトのサイズを変更したいと思います。クラスコンストラクターから次のことを試しました:

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 に答える