2010-08-27 9 views
7

Tengo un GLSurfaceView donde muestro algunas animaciones con OpenGL.Botón y GLSurfaceView

Ahora quiero agregar un botón a esta vista. ¿Cómo se logra esto?

¿Se puede hacer sin involucrar el diseño xml?

Respuesta

18

Puede crear y agregar Vistas de forma manual a la vista de contenido de la Actividad. En el método onCreate en su actividad después de hacer setContentView en su GLSurfaceView oa través de un diseño de XML que puede hacer lo siguiente, que agregará un botón en la parte superior de la GLSurfaceView en la esquina superior izquierda:

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

Si desea que el para estar en otro lugar en la pantalla, deberá agregarlo a un diseño y luego agregar ese diseño a la vista de contenido. Para tener un botón que se encuentra en el centro de la pantalla se puede hacer lo siguiente:

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

Si desea que el botón en la parte inferior de la pantalla se puede usar en lugar de Gravity.BOTTOM Gravity.CENTER_VERTICAL etc.

Asegúrese de estar llamando a return super.onTouch ... en sus métodos de evento táctil si su GLSurfaceView está interceptando toques o su botón no recibirá eventos táctiles.

+1

Para cualquier otra persona que se tropiece con esto, intente 'ViewGroup.LayoutParams' cuando sea necesario; eso ayudará (al menos Android Studio) a encontrar la importación necesaria. –

Cuestiones relacionadas