Android SurfaceView占用了布局中的所有空间

时间:2012-10-05 14:43:56

标签: android layout surfaceview

我有这个布局:

<LinearLayout
                    android:layout_width="match_parent"
                    android:layout_height="match_parent"
                    android:orientation="vertical">


                <SurfaceView
                    android:id="@+id/Preview"
                    android:layout_width="fill_parent"
                    android:layout_height="fill_parent"
                    android:layout_marginBottom="20dp"
                    android:layout_marginLeft="20dp"
                    android:layout_marginRight="20dp" />


                <VideoView
                    android:id="@+id/videoView"
                    android:layout_width="fill_parent"
                    android:layout_height="fill_parent"
                    android:layout_marginBottom="20dp"
                    android:layout_marginLeft="20dp"
                    android:layout_marginRight="20dp"/>
            </LinearLayout>

SurfaceView和VideoView应该平等地共享可用空间,如果我先放置VideoView,它们就会共享。当我像上面那样做时,SurfaceView占用了布局中的所有空间。 如何在不给出宽度和高度的特定dps的情况下阻止这种情况?

3 个答案:

答案 0 :(得分:0)

您的两个Views都填充了父级作为属性状态:android:layout_width=fill_parent

要平均划分屏幕以使两个视图彼此相邻,您可以使用权重:

        <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:orientation="vertical">


            <SurfaceView
                android:id="@+id/Preview"
                android:layout_width="fill_parent"
                android:layout_height="0dp"
                android:layout_marginBottom="20dp"
                android:layout_marginLeft="20dp"
                android:layout_marginRight="20dp"
                android:layout_weight="1" />


            <VideoView
                android:id="@+id/videoView"
                android:layout_width="fill_parent"
                android:layout_height="0dp"
                android:layout_marginBottom="20dp"
                android:layout_marginLeft="20dp"
                android:layout_marginRight="20dp"
                android:layout_weight="1" />
        </LinearLayout>

答案 1 :(得分:0)

您必须添加layout_weight = 1

<LinearLayout
                    android:layout_width="match_parent"
                    android:layout_height="match_parent"
                    android:orientation="vertical">


                <SurfaceView
                    android:id="@+id/Preview"
                    android:layout_width="fill_parent"
                    android:layout_height="fill_parent"
                    android:layout_marginBottom="20dp"
                    android:layout_marginLeft="20dp"
                    android:layout_marginRight="20dp" 
                    android:layout_weight="1"/>


                <VideoView
                    android:id="@+id/videoView"
                    android:layout_width="fill_parent"
                    android:layout_height="fill_parent"
                    android:layout_marginBottom="20dp"
                    android:layout_marginLeft="20dp"
                    android:layout_marginRight="20dp"
                    android:layout_weight="1"/>
            </LinearLayout>

答案 2 :(得分:0)

尝试使用“weightSum = 2”。同时在两个视图中分割边距!

<LinearLayout
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:orientation="vertical"
                android:layout_marginLeft="20dp"
                android:layout_marginRight="20dp"
                android:weightSum="2">


            <SurfaceView
                android:id="@+id/Preview"
                android:layout_width="fill_parent"
                android:layout_height="fill_parent"
                android:layout_marginBottom="10dp"
                android:layout_weight="1"/>


            <VideoView
                android:id="@+id/videoView"
                android:layout_width="fill_parent"
                android:layout_height="fill_parent"
                android:layout_marginTop="10dp"
                android:layout_marginBottom="20dp"
                android:layout_weight="1"/>
        </LinearLayout>