TableLayout 支持权重吗
TableLayout是支持权重的。尽管在TableLayout的直接属性中并没有layout_weight
这一说法,但在每一行的TableRow属性中,可以加上android:layout_weight
来设定权重。例如,如果你想要将一行内的视图平均分成三部分,你可以为每一个TableRow设置android:layout_weight="1"
。这样,TableLayout就会根据权重来分配每一行或每一列的空间。
TableLayout 应用举例
TableLayout
是 Android 中用于创建表格布局的一个容器。它允许你以行和列的形式组织视图,非常适合用于展示数据表格或任何需要二维布局的场合。以下是 TableLayout
的一个应用举例:
1. 布局文件 (activity_main.xml
)
xml复制代码
<TableLayout | |
android:layout_width="match_parent" | |
android:layout_height="match_parent" | |
android:padding="16dp"> | |
<TableRow | |
android:layout_width="match_parent" | |
android:layout_height="wrap_content"> | |
<TextView | |
android:layout_width="0dp" | |
android:layout_height="wrap_content" | |
android:layout_weight="1" | |
android:text="姓名" | |
android:gravity="center" | |
android:padding="8dp" | |
android:background="#EEE"/> | |
<TextView | |
android:layout_width="0dp" | |
android:layout_height="wrap_content" | |
android:layout_weight="1" | |
android:text="年龄" | |
android:gravity="center" | |
android:padding="8dp" | |
android:background="#EEE"/> | |
</TableRow> | |
<!-- 假设我们动态添加行数据 --> | |
</TableLayout> |
2. 在 Activity 中动态添加行
java复制代码
TableLayout tableLayout = findViewById(R.id.your_table_layout_id); // 替换为你的TableLayout ID | |
for (int i = 0; i < 5; i++) { | |
TableRow tableRow = new TableRow(this); | |
// 添加姓名列 | |
TextView nameTextView = new TextView(this); | |
nameTextView.setText("张三" + i); | |
nameTextView.setGravity(Gravity.CENTER); | |
nameTextView.setLayoutParams(new TableRow.LayoutParams(0, TableRow.LayoutParams.WRAP_CONTENT, 1f)); // 设置权重 | |
tableRow.addView(nameTextView); | |
// 添加年龄列 | |
TextView ageTextView = new TextView(this); | |
ageTextView.setText("25"); | |
ageTextView.setGravity(Gravity.CENTER); | |
ageTextView.setLayoutParams(new TableRow.LayoutParams(0, TableRow.LayoutParams.WRAP_CONTENT, 1f)); // 设置权重 | |
tableRow.addView(ageTextView); | |
// 将行添加到TableLayout | |
tableLayout.addView(tableRow); | |
} |
3. 注意事项
- 在
TableRow
中的TextView
,我们使用了layout_width="0dp"
和layout_weight="1"
的组合来让两列宽度平均分配。 - 我们为
TextView
设置了背景色和填充,以便更好地看到每个单元格的边界。 - 在动态添加行时,我们为每个
TextView
设置了TableRow.LayoutParams
,并指定了权重为 1,这样它们就会平均分配空间。
这个示例展示了如何使用 TableLayout
和 TableRow
来创建一个简单的表格,并通过代码动态添加行数据。