有人告诉我,我可以使用第二种线性布局,使我的按钮伸展以垂直填充剩余的空白区域。我不知道从哪里开始。任何帮助将不胜感激。
<?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:gravity="center"
android:orientation="vertical" >
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:gravity="center"
android:orientation="horizontal" >
<TableLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_weight="1"
android:gravity="center">
<TableRow>
<Button
android:id="@+id/one"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_gravity="fill_vertical"
android:layout_weight="1"
android:gravity="center"
android:text="1" />
<Button
android:id="@+id/two"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_weight="1"
android:gravity="center"
android:text="2" />
</TableRow>
<TableRow>
<Button
android:id="@+id/three"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_gravity="fill_vertical"
android:layout_weight="1"
android:gravity="center"
android:text="3" />
<Button
android:id="@+id/four"
android:text="4"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:gravity="center"
android:layout_weight="1" />
</TableRow>
<TableRow>
<Button
android:id="@+id/five"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_weight="1"
android:gravity="center"
android:text="5" />
<Button
android:id="@+id/six"
android:text="6"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:gravity="center"
android:layout_weight="1" />
</TableRow>
</TableLayout>
</LinearLayout>
</LinearLayout>
答案 0 :(得分:2)
我认为您正在寻找的功能是android:weightSum。 这是官方参考: http://developer.android.com/reference/android/widget/LinearLayout.html#attr_android:weightSum
因此,要将表格布局扩展为全屏,您需要为TableLayout指定weightSum为3,并将android:layout_weight除以1分配给每个TableRow。这将给你想要的结果。
所以你的xml布局文件将如下所示:
<?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:gravity="center"
android:orientation="vertical" >
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:gravity="center"
android:orientation="horizontal" >
<TableLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:weightSum="3"
android:gravity="center">
<TableRow
android:layout_weight="1">
<Button
android:id="@+id/one"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_gravity="fill_vertical"
android:layout_weight="1"
android:gravity="center"
android:text="1" />
<Button
android:id="@+id/two"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_weight="1"
android:gravity="center"
android:text="2" />
</TableRow>
<TableRow
android:layout_weight="1">
<Button
android:id="@+id/three"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_gravity="fill_vertical"
android:layout_weight="1"
android:gravity="center"
android:text="3" />
<Button
android:id="@+id/four"
android:text="4"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:gravity="center"
android:layout_weight="1" />
</TableRow>
<TableRow
android:layout_weight="1">
<Button
android:id="@+id/five"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_weight="1"
android:gravity="center"
android:text="5" />
<Button
android:id="@+id/six"
android:text="6"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:gravity="center"
android:layout_weight="1" />
</TableRow>
</TableLayout>
</LinearLayout>
</LinearLayout>
答案 1 :(得分:2)
我假设您希望按钮填满屏幕上的可用高度。在这种情况下,请在这里查看答案Android TableLayout height does not fills the whole screen
<?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:gravity="center"
android:orientation="vertical" >
<TableLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:gravity="center" >
<TableRow
android:layout_height="0dp"
android:layout_weight="1" >
<Button
android:id="@+id/one"
android:layout_width="0dp"
android:layout_height="fill_parent"
android:layout_weight="1"
android:gravity="center"
android:text="1" />
<Button
android:id="@+id/two"
android:layout_width="0dp"
android:layout_height="fill_parent"
android:layout_weight="1"
android:gravity="center"
android:text="2" />
</TableRow>
<TableRow
android:layout_height="0dp"
android:layout_weight="1" >
<Button
android:id="@+id/three"
android:layout_width="0dp"
android:layout_height="fill_parent"
android:layout_weight="1"
android:gravity="center"
android:text="3" />
<Button
android:id="@+id/four"
android:layout_width="0dp"
android:layout_height="fill_parent"
android:layout_weight="1"
android:gravity="center"
android:text="4" />
</TableRow>
<TableRow
android:layout_height="0dp"
android:layout_weight="1" >
<Button
android:id="@+id/five"
android:layout_width="0dp"
android:layout_height="fill_parent"
android:layout_weight="1"
android:gravity="center"
android:text="5" />
<Button
android:id="@+id/six"
android:layout_width="0dp"
android:layout_height="fill_parent"
android:layout_weight="1"
android:gravity="center"
android:text="6" />
</TableRow>
</TableLayout>
</LinearLayout>
请注意,表行现在有
android:layout_height="0dp"
android:layout_weight="1"
这将允许行展开以填充剩余空间(每行占屏幕高度的1/3)。
我还将按钮布局宽度更改为0dp,因为您正在使用重量。此外,您不需要xmlns:android="http://schemas.android.com/apk/res/android"
3次。您只需要父布局。
最后,因为许多按钮都使用相同的样式。我建议你看一下可能使用这些按钮的样式。您可以在http://developer.android.com/guide/topics/ui/themes.html了解有关样式/主题的更多信息。