我正在尝试制作一个方形的自定义视图,使用宽度作为高度。我还使用了一个预定义的布局,我将它作为 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));
}
}
我有两个问题:
- 如何覆盖 onMeasure 以便它以我期望的方式绘制我的视图?
- 有什么方法可以让我在视图层次结构方面更有效(即不将RelativeLayout放在RelativeLayout中)