我是Android的新手,所以对GUi布局还不是很好。我正在为我的应用程序构建一个GUI,但却无法让它按照我想要的方式运行。我需要的是屏幕底部4个水平堆叠的按钮。在按钮上方,我放置了一个SurfaceView,我想填充屏幕的其余部分。结果应该是这样的(我希望这很清楚):
-----------------
- -
- -
- -
- -
- SurfaceView -
- -
- -
- -
-----------------
--- --- --- ---
-B- -B- -B- -B-
--- --- --- ---
我得到的结果是:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<TableLayout
android:id="@+id/tableLayout1"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
<TableRow
android:id="@+id/tableRow1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="center" >
<SurfaceView
android:id="@+id/surfaceView1"
android:layout_width="fill_parent"
android:layout_height="fill_parent" />
</TableRow>
<TableRow
android:id="@+id/tableRow2"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="center" >
<LinearLayout
android:id="@+id/linearLayout1"
android:layout_width="fill_parent"
android:layout_height="wrap_content" >
<Button
android:id="@+id/button2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="5dp"
android:text="Button" />
<Button
android:id="@+id/button3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="5dp"
android:text="Button" />
<Button
android:id="@+id/button4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="5dp"
android:text="Button" />
<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="5dp"
android:text="Button" />
</LinearLayout>
</TableRow>
</TableLayout>
</LinearLayout>
不幸的是,结果是这样的:
-----------------
- SurfaceView -
-----------------
--- --- --- ---
-B- -B- -B- -B-
--- --- --- ---
答案 0 :(得分:2)
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<SurfaceView
android:id="@+id/surfaceView1"
android:layout_width="fill_parent"
android:layout_height="0dp"
android:layout_weight = "1"
/>
<LinearLayout
android:id="@+id/linearLayout1"
android:layout_width="fill_parent"
android:layout_height="wrap_content" >
<Button
android:id="@+id/button2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="5dp"
android:text="Button" />
<Button
android:id="@+id/button3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="5dp"
android:text="Button" />
<Button
android:id="@+id/button4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="5dp"
android:text="Button" />
<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="5dp"
android:text="Button" />
</LinearLayout>
</LinearLayout>
试试这个。
layout_weight是一个适用于线性布局子元素的标记。如果提到的话,孩子们将根据体重分享方向测量。在您的情况下,因为线性布局是垂直的,所以如果提到权重,它们将共享高度。
linearLayout的默认weightSum为1,因此如果给任何一个子节点1,则占用剩余空间。并且假设父母有2个孩子,他们的体重为0.6和0.4,第一个孩子将占父母身高的60%,其余40%由第二个孩子。
答案 1 :(得分:0)
尝试使用最顶层布局的相对布局,并使用alignParentBottom作为按钮栏布局。