Squareの onMeasure は、コードに従って、渡された高さを無視する場所で既にオーバーライドされているため、次のようになります。
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
super.onMeasure(widthMeasureSpec, widthMeasureSpec);
}
あなたが望むことを行う1つの方法-view1を拡張するview2ですが、現在、view2の高さを親と同じにして、全画面をカバーする必要があります-setDimensionで呼び出しているview2のonMeasureをオーバーライドすることですこのように。 ..
public class Square2 extends Square {
public Square2(Context context, AttributeSet attrs) {
super(context, attrs);
}
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
setMeasuredDimension(widthMeasureSpec, heightMeasureSpec);
}
}
試した後のサンプルがこちら。(Square View のコードについては、onMeasure のコードをコピーしただけです)。
正方形の使用:

正方形 2 の場合:

お役に立てれば。