1

我正在构建一个应用程序以在 android 手机的屏幕上绘图。我通过扩展 SurfaceView 类来使用 Surface View。当我这样做时,我无法在屏幕上添加任何按钮。屏幕变黑,什么也看不见。我已经在网上搜索并尝试了所有可能的方法。我还想更改surfaceView 的大小,通过它我可以只在屏幕的一部分上绘制并将按钮放在其余部分上。有人可以建议我这样做的另一种方法或在这方面帮助一些想法吗?太感谢了!

4

1 回答 1

1

将按钮添加到表面视图:

在您的 xml 布局中使用 FrameLayout 将您的 surfaceView 括起来。然后将您的按钮添加到相同的 FrameLayout。确保将它们放置在表面视图下方,以便将它们绘制在其顶部。(将它们捆绑在另一个布局中并将其添加到 FrameLayout 可能是个好主意。)

<FrameLayout
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="match_parent"
  android:layout_height="match_parent">
    <SurfaceView android:id="@+id/surfaceView1" android:layout_width="wrap_content" android:layout_height="wrap_content"></SurfaceView>
    <LinearLayout android:id="@+id/linearLayout1" android:layout_width="wrap_content" android:layout_height="wrap_content">
        <Button android:text="Button" android:id="@+id/button1" android:layout_width="wrap_content" android:layout_height="wrap_content"></Button>
        <Button android:text="Button" android:id="@+id/button2" android:layout_width="wrap_content" android:layout_height="wrap_content"></Button>
    </LinearLayout>
</FrameLayout>

更改表面视图的大小

只需要检查您设置的 LaoutParams 类型,使用 FrameLayoutPrams 而不是 LayoutParams。我需要这样设置:

    android.widget.FrameLayout.LayoutParams params = new android.widget.FrameLayout.LayoutParams(width, height);
    surface.setLayoutParams(params);

希望能帮到你

于 2013-01-17T18:07:07.260 回答