RelativeLayout から派生したカスタム レイアウトがあります。配置されているコンテナー レイアウトのサイズに応じて、カスタム レイアウトをスケーリングする必要があります。
これは、これまでのカスタム レイアウトの内容です。
public class ScaledRelativeLayout extends RelativeLayout {
private static final float HEIGHT = 460;
private static final float WIDTH = 380;
private float scale = 1.0f;
private float pivotX = 0.0f;
private float pivotY = 0.0f;
Matrix matrix = new Matrix();
public ScaledRelativeLayout( Context cxt, AttributeSet attrs ) {
super( cxt, attrs );
}
@Override
public void dispatchDraw( Canvas canvas ) {
canvas.save();
View parent = (View)getParent();
int parentHeight = parent.getHeight();
int parentWidth = parent.getWidth();
float scaleX = (float)parentWidth / WIDTH;
float scaleY = (float)parentHeight / HEIGHT;
scale = Math.min( scaleX, scaleY );
pivotX = (float)parentWidth / 2;
pivotY = 0;
canvas.scale( scale, scale, pivotX, pivotY );
super.dispatchDraw( canvas );
canvas.restore();
}
}
これはほとんど機能します。問題は、何らかの理由でカスタム ビューの下部がトリミングされていることです。ビューが描画されたときのクリッピング領域が小さすぎるようです。