2011-08-16 55 views
0

我想在我的應用程序當前SurfaceView萎縮surfaceview是在一個盒子裏

current surfaceview look

改變

wanted surfaceview look

有沒有辦法做到這一點,而無需使用main.xml在所有?

我想在運行時編寫GUI。我可以通過覆蓋onMeasure()並使用setMeasuredDimension()來實現當前SurfaceView(頂部圖片),但是我想實現底部圖片。綠色區域是屏幕的其餘部分。

編輯:

@Override 
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) 
{ 
    this.setMeasuredDimension(500, 300); 
    param.gravity = Gravity.CENTER_VERTICAL; 
} 
+0

你在使用什麼佈局,你已經有什麼代碼? –

+0

我正在使用FrameLayout。但我不想修改main.xml,因爲我想了解如何在運行時執行此操作。我將我的代碼從Qualcomm AR SDK中刪除,無法發佈全部代碼。我用來實現這個的最重要的方法是onMeasure(),否則SurfaceView將變成全屏。 '@Override \t protected void onMeasure(int widthMeasureSpec,int heightMeasureSpec) \t {this.setMeasuredDimension(500,300); \t}' – ffrstar777

回答

1

您是否嘗試過使用android:layout_gravity -attribute居中您在佈局視圖?

對應的類將是FrameLayout.LayoutParams,可能引力的列表here。代碼可能看起來像這樣:

FrameLayout f = new FrameLayout(this); 
ImageView test = new ImageView(this); 
f.addView(test, new FrameLayout.LayoutParams(500, 300, Gravity.CENTER)); 
+0

由於某種原因,當我試圖在我的應用程序中插入這些行時,我的應用程序不斷崩潰。我在這個網站上發佈的代碼行數太多。我曾嘗試利用重力,像'\t @覆蓋 \t保護無效onMeasure(INT widthMeasureSpec,詮釋heightMeasureSpec) \t { \t \t this.setMeasuredDimension(500,300); \t \t param.gravity = Gravity.CENTER_VERTICAL; \t} \t' 但它仍然具有相同的效果。這是你如何使用它? – ffrstar777

+0

如果你說你在代碼中創建了整個佈局,我想這會發生在'onCreate()' - 方法中。然後,您應該簡單地將'LayoutParams'添加到您想要顯示在「FrameLayout」中的視圖中。 –