2012-10-15 38 views
1

我有一個MainActivity,並且在MainActivity內部有一個自定義的TouchView對象,它擴展了ImageView。沒有XML佈局在我的項目中使用,我在MainActivity的OnCreate()以下行:我的ImageView大小已被更改

... 
    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)?

謝謝!

+0

看看你是否對xml感興趣,它在xml中更容易 –

+0

myTouchView =(TouchView)findViewById(...);但是我得到的這個對象並不是我需要的,因爲我想將一些值傳遞給構造函數中的對象,但是這個不能得到它們。 – user1745958

回答

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

適合我,任何潛在的錯誤。

+0

Framelayout.LayoutParams params = new Framelayout.LayoutParams params = new Framelayout.LayoutParams(bmp.getWidth(),bmp.getHeight()); setContentView(myTouchView,params); 這也適用。 – user1745958