我的Android应用程序中,如何使视图填满其父容器的整个宽度?

20

我已为我的某个 Activity 定义了以下布局:

<?xml version="1.0" encoding="utf-8"?>
<TableLayout android:id="@+id/TableLayout01" android:layout_width="fill_parent" android:layout_height="fill_parent" xmlns:android="http://schemas.android.com/apk/res/android">
    <TableRow android:id="@+id/TableRow01" android:layout_height="wrap_content" android:layout_width="fill_parent">
        <EditText android:text="Resource Name" android:id="@+id/ResourceName" android:lines="1" android:isScrollContainer="false"></EditText>
    </TableRow>
    <TableRow android:id="@+id/TableRow02" android:layout_height="wrap_content" android:layout_width="fill_parent">
        <Button android:id="@+id/Tile" android:text="Tile"></Button>
    </TableRow>
</TableLayout>

我的布局基本正确,唯一的问题是我的文本框和按钮没有占据它们各自行的整个宽度。

我尝试为布局宽度属性指定fill_parent,但是无济于事,它们仍然只占据大约一半的屏幕。

Android的文档总体来说非常好,但像这样的情况还有一些我遇到了看不见的障碍!感谢所有的帮助!

3个回答

49

3
啊,查询API后发现,值为“*”(或以0开始的逗号分隔的列列表)可行。谢谢! - Alexander Trauzzi

21

在您的tableRow视图中使用android:layout_width="match_parent"

现在,在您的TableLayout中有不同的可能性,可以将参数android:stretchColumns设置为:

值 "*" 视图将具有相同的宽度,并填充行,占用相同的空间

值 "0" 或其他整数 -> 与整数对应的第一个元素将填充行。其他视图将以wrap_content的方式具有相同的宽度

例如,一个具有3个tableRow和每个row中有2个视图的tablelayout:

未设置android:stretchColumns

[|TextView|EditText|          ]
[|TextView|EditText|          ]
[|TextView|EditText|          ]

android:stretchColumns="*"

将指定表格布局中的所有列都拉伸以填充可用空间。
[|  TextView    |  EditText  |]
[|  TextView    |  EditText  |]
[|  TextView    |  EditText  |]

android:stretchColumns="0"

[|    TextView      |EditText|]
[|    TextView      |EditText|]
[|    TextView      |EditText|]

android:stretchColumns="1"

[|TextView|      EditText    |]
[|TextView|      EditText    |]
[|TextView|      EditText    |]

非常好的答案。 - Cleaven
这个必须被接受,因为他甚至为所有可能的方式提供了可视化表示。 - Vijay Kumar Kanta

9
尝试在TableRow的定义中添加以下内容:
<TableLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:stretchColumns="1">

1
看起来列索引是从0开始,但是没错,这就是它!抱歉,我希望我能选择两个正确答案 ;) - Alexander Trauzzi

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接