CustomView未在ScrollView中显示

jho*_*ton 1 android bitmap android-layout android-canvas

这里有新的Android程序员.

我正在尝试在Android上将.png图像显示为位图.我能够显示转换后的图像的唯一方法是使用扩展的自定义类View.但是,我的图像太大,无法完全显示在屏幕上,我希望能够滚动它.但是当我定义一个ScrollView并将CanvasBitmap放入其中时,我得到一个空白屏幕.我没有运气设置布局文件,所以这一切都在Activity类中完成.

这是创建活动的位置:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    ScrollView scroll = new ScrollView(this);
    scroll.addView(new CustomView(this));
    setContentView(scroll);
}
Run Code Online (Sandbox Code Playgroud)

这是我的CustomView类:

private class CustomView extends View{

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

    @Override
    protected void onDraw(Canvas canvas){
        Bitmap bitmapMap = BitmapFactory.decodeResource(getResources(),R.drawable.resourceimage);
        canvas.drawBitmap(bitmapMap,0,0,null);
        this.setWillNotDraw(false);
    }
}
Run Code Online (Sandbox Code Playgroud)

如果我在我的Activity中替换这行代码:setContentView(scroll) 使用这一行:setContentView(new CustomView(this)),我可以看到图像,尽管不是整个图像.那么,有没有办法在布局文件中设置它呢?或者有什么我想念的东西我需要在ScrollView课堂上宣布?

编辑:我不想使用ImageView,因为我想在特定位置更改图像,使用位图似乎是通过x和y坐标实现这一目标的最简单方法.

Jin*_*Jin 5

您的自定义视图需要覆盖该onMeasure方法并正确设置测量的宽度和高度,以便父视图(在本例中为ScrollView)可以知道为子项分配多少空间.