ScaledRelativeLayout 错误比例与 onDraw 方法

ScaledRelativeLayout wrong scale with the onDraw method

我成功创建了一个 ViewPager,其中包含不同比例的项目(currentItem 的比例为 1.0f,其他的为 0.85f)。我使用这个自定义布局:

import android.content.Context;
import android.graphics.Canvas;
import android.util.AttributeSet;
import android.widget.RelativeLayout;

public class ScaledRelativeLayout extends RelativeLayout {
    private float scale = MainActivity.BIG_SCALE;

    public ScaledRelativeLayout(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    public ScaledRelativeLayout(Context context) {
        super(context);
    }

    public void setScaleBoth(float scale) {
        this.scale = scale;
        invalidate();
    }

    @Override
    protected void onDraw(Canvas canvas) {
        super.onDraw(canvas);
        canvas.scale(scale, scale, getWidth() / 2, getHeight()/2);
    }
}

问题是它可以在我的 Nexus 7 (2012) 上运行,但在我的智能手机上不行,我不明白为什么......我在想也许我在搜索后在 onDraw 方法中做了一个糟糕的比例,我试试这个:

@Override
protected void onDraw(Canvas canvas) {
    super.onDraw(canvas);
    canvas.save();
    canvas.scale(scale, scale, getWidth() / 2, getHeight()/2);
    canvas.restore();
}

没有任何效果,知道吗?

我通过扩展 FrameLayout 而不是 RelativeLayout 成功地扩展了我的布局,我不知道...如果有人能解释为什么它使用 FrameLayout 而不是 RelativeLayout...