向Surface View添加按钮并更改SurfaceView的大小

时间:2013-01-17 17:59:35

标签: android surfaceview

我正在构建一个应用程序,以在Android手机的屏幕上绘制。我通过扩展SurfaceView类使用Surface View。当我这样做时,我无法在屏幕上添加任何按钮。屏幕变黑,看不到任何东西。我在网上搜索并尝试了一切。我还想改变surfaceView的大小,通过它我只能在屏幕的一部分绘制并在其余部分放置按钮。有人可以建议我这样做的另一种方法或帮助这方面的一些想法吗?非常感谢你!

1 个答案:

答案 0 :(得分: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>

更改曲面视图的大小

只需要使用FrameLayoutPrams而不是LayoutParams来检查您正在设置哪种LaoutParams。我需要这样设置:

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

希望帮助你