7

我有一个 GLSurfaceView,我在其中使用 OpenGL 显示一些动画。

我现在想在这个视图中添加一个按钮。这是如何实现的?

可以在不涉及xml布局的情况下完成吗?

4

1 回答 1

17

您可以手动构建视图并将其添加到 Activity 的内容视图中。在 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... ,否则您的按钮将不会接收触摸事件。

于 2010-09-05T23:13:49.210 回答