我的ImageView大小已更改

时间:2012-10-15 03:46:53

标签: android

我有一个MainActivity,我在MainActivity中有一个自定义TouchView对象,它扩展了ImageView。在我的项目中没有使用XML布局,我在MainActivity的onCreate()中有以下几行:

 ...
    myTouchView = new TouchView();
    myTouchView.layout(0,0,bitmap.getWidth(),bitmap.getHeight());//bitmap W*H: 3264*2448
    MainActivity.this.setContentView(myTouchView);
    ...

然后我在TouchView的onDraw()中设置一个断点,在那里我总是得到TouchView对象的宽度和高度,而不是我在layout()上设置的3264 * 2448。这意味着在onDraw()之前我的TouchView的大小已经改变。我得到的宽度和高度是480 * 320(实际上是屏幕尺寸)。

如何获得正确的size(3264*2448)?

谢谢!

1 个答案:

答案 0 :(得分:0)

我自己就杀了这个问题。我像这样重写onMeasure():

 protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec){
 int parentWidth = MeasureSpec.getSize(widthMeasureSpec);
 int parentHeight = MeasureSpec.getSize(heightMeasureSpec);
 if(parentWidth == bmp.getWidth() && parentHeight == bmp.getHeight())
     super.onMeasure(idthMeasureSpec, heightMeasureSpec);
 else
     this.setMeasuredDimension(parentWidth/2, parentHeight);
 }

适合我,任何潜在的错误。