У меня есть пользовательский вид, в котором есть Canvas
. Я использую этот холст, чтобы показать на нем растровое изображение, а затем я могу рисовать по растровому изображению при касании. Когда я загружаю растровое изображение, оно намного больше, чем размер представления, и я не вижу всего растрового изображения (это изображение, сделанное камерой). Я попытался создать масштабированное растровое изображение, а затем нарисовать его на холсте, но в этом случае растровое изображение меньше, и холст занимает все доступное пространство макета. Я добавляю это представление программно, а не в макет xml. Я установил это для представления, но не работает:
fdvImage = new ImageEditingView(this, b);
RelativeLayout.LayoutParams lp = new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
lp.addRule(RelativeLayout.CENTER_IN_PARENT, 1);
fdvImage.setLayoutParams(lp);
и это мой конструктор представлений:
public ImageEditingView(Context c, Bitmap b) {
super(c);
this.setMinimumHeight(0);
mBitmap = Bitmap.createScaledBitmap(b, b.getWidth()/2, b.getHeight()/2, true);
mCanvas = new Canvas(mBitmap);
}
и в onDraw
у меня есть это:
protected void onDraw(Canvas canvas) {
canvas.drawBitmap(mBitmap, 0, 0, mBitmapPaint);
}
Итак, мой вопрос: почему холст занимает все пространство макета, даже если растровое изображение меньше, чем оно?