Android ScaledRelativeLayout使用onDraw方法的比例错误

Android ScaledRelativeLayout使用onDraw方法的比例错误,android,canvas,android-custom-view,ondraw,Android,Canvas,Android Custom View,Ondraw,我成功地创建了一个ViewPager,其中的项目具有不同的比例(当前项目的比例类似于1.0f,其他项目的比例类似于0.85f)。我使用此自定义布局: import android.content.Context; import android.graphics.Canvas; import android.util.AttributeSet; import android.widget.RelativeLayout; public class ScaledRelativeLayout exte

我成功地创建了一个ViewPager,其中的项目具有不同的比例(当前项目的比例类似于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);
    }
}
问题是它在我的Nexus7(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来扩展我的布局,我不知道。。。如果有人能解释为什么它使用的是框架布局而不是相对布局

也许你应该通过测量来决定你的布局的大小。
canvas.scale
onDraw
的末尾让人感觉不到我尝试了这两种方法,但你是对的。