幅を高さとして使用して、正方形のカスタム ビューを作成しようとしています。UIとして膨らませる事前定義されたレイアウトも使用しています。onMeasure をオーバーライドするとすぐに、カスタム ビューが表示されなくなりました。これが私のコードです:
public class MyView extends RelativeLayout{
public MyView(Context context) {
super(context);
addView(setupLayout(context));
}
public MyView(Context context, AttributeSet attrs) {
super(context, attrs);
addView(setupLayout(context));
}
public MyView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
addView(setupLayout(context));
}
private View setupLayout(Context context) {
LayoutInflater inflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View myView = inflater.inflate(R.layout.view_layout, null);
return myView;
}
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
setMeasuredDimension(MeasureSpec.getSize(widthMeasureSpec), MeasureSpec.getSize(widthMeasureSpec));
}
}
2 つの質問があります。
- onMeasure をオーバーライドして、期待どおりにビューを描画するにはどうすればよいですか?
- ビュー階層に関してこれをより効率的にする方法はありますか (つまり、RelativeLayout を RelativeLayout 内に配置しないでください)。