我有一个GLSurfaceView,我在其中使用OpenGL显示一些动画。
我现在想在此视图中添加一个按钮。这是如何完成的?
可以在不涉及xml布局的情况下完成吗?
答案 0 :(得分:18)
您可以手动构建视图并将其添加到活动的内容视图中。在GLSurfaceView上执行setContentView或通过XML布局后,在Activity中的onCreate方法中,您可以执行以下操作,在左上角的GLSurfaceView顶部添加一个按钮:
Button b = new Button(this);
b.setText("Hello World");
this.addContentView(b,
new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
如果您希望按钮位于屏幕上的其他位置,则需要将其添加到布局中,然后将该布局添加到内容视图中。要拥有位于屏幕中心的按钮,您可以执行以下操作:
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));
如果你想要屏幕底部的按钮,你可以使用Gravity.BOTTOM而不是Gravity.CENTER_VERTICAL等。
如果您的GLSurfaceView正在拦截触摸,或者您的按钮无法接收触摸事件,请确保您在触摸事件方法中调用return super.onTouch ....