2010-08-27 72 views
7

我有一個GLSurfaceView,我使用OpenGL顯示一些動畫。按鈕和GLSurfaceView

我現在想爲此視圖添加一個按鈕。這是如何完成的?

可以在不涉及xml佈局的情況下完成嗎?

回答

18

您可以手動構建視圖並將其添加到活動的內容視圖中。在您GLSurfaceView或通過XML的佈局,你可以做,這將在左上角添加在GLSurfaceView頂部的按鈕,下面做的setContentView後在活動的onCreate方法:如果你想

Button b = new Button(this); 
b.setText("Hello World"); 
this.addContentView(b, 
      new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT)); 

按鈕在屏幕上的其他位置,您需要將其添加到佈局,然後將該佈局添加到內容視圖。爲了有一個按鈕,是你可以做以下的屏幕中心:如果你想在屏幕底部的按鈕,你可以用它代替Gravity.CENTER_VERTICAL等

Gravity.BOTTOM

LinearLayout ll = new LinearLayout(this); 
Button b = new Button(this); 
b.setText("hello world"); 
ll.addView(b); 
ll.setGravity(Gravity.CENTER_HORIZONTAL | Gravity.CENTER_VERTICAL); 
this.addContentView(ll, 
      new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT)); 

如果您的GLSurfaceView正在攔截觸摸或您的按鈕不會接收觸摸事件,請確保您在觸摸事件方法中調用return super.onTouch ...。

+1

對於任何絆倒這個的人,在需要時嘗試'ViewGroup.LayoutParams';這將有助於(Android Studio至少)找到必要的導入。 – 2015-02-17 04:32:23