1

我有一个 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() 中设置了一个断点,在那里我总是得到不是我在 layout() 上设置的 3264*2448 的 TouchView 对象的宽度和高度。这意味着我的 TouchView 的大小在 onDraw() 之前已更改。我得到的宽度和高度是480 * 320(实际上是屏幕尺寸)。

我怎样才能得到正确的size(3264*2448)?

谢谢!

4

1 回答 1

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);
 }

对我来说效果很好,任何潜在的错误。

于 2012-10-15T13:56:28.340 回答