android:shrinkColumns 和 android:stretchColumns 是如何工作的?

How do android:shrinkColumns and android:stretchColumns work?

我可以在 TableLayout 处设置 android:shrinkColumnsandroid:stretchColumns

例如:

<TableLayout
    android:shrinkColumns="2,3"
    android:stretchColumns="1,3"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"/>

那么这个属性如何影响列?

TableLayout 可以通过调用 setColumnShrinkable()(xml:android:shrinkColumns) or setColumnStretchable()(xml:android:stretchColumns) 将某些列指定为 可收缩或可拉伸。

如果标记为 可收缩,则可以缩小列宽以适应 table 到其父对象。如果标记为可拉伸,它可以扩展宽度以适应任何额外的 space。

table 的总宽度由其父容器定义。重要的是要记住,列可以 可收缩和可拉伸

详细信息您可以访问

https://developer.android.com/reference/android/widget/TableLayout.html

  • android:stretchColumns

    要拉伸的列的从零开始的索引。列索引必须用逗号分隔:1、2、5。非法和重复的索引将被忽略。您可以改为使用值“*”来拉伸所有列。请注意,一个列可以同时标记为可拉伸和可收缩。

  • android:shrinkColumns

    要收缩的列的从零开始的索引。列索引必须用逗号分隔:1、2、5。非法和重复的索引将被忽略。您可以使用值“*”来缩小所有列。请注意,一个列可以同时标记为可拉伸和可收缩。

  • android:collapseColumns

    要折叠的列的从零开始的索引。列索引必须用逗号分隔:1, 2, 5。非法和重复的索引将被忽略。

    <TableLayout 
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:stretchColumns="*"
    android:background="@color/grey">
    
    <TableRow>
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_column="0"
            android:background="@color/red"
            android:textColor="@android:color/white"
            android:textSize="30dp"
            android:text="1" />
    
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_column="1"
            android:textColor="@android:color/white"
            android:textSize="30dp"
            android:background="@color/green"
            android:text="2" />
    
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_column="2"
            android:textColor="@android:color/white"
            android:textSize="30dp"
            android:background="@color/blue"
            android:text="3" />
    </TableRow>
    
    
    <TableRow>
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_column="0"
            android:background="@color/red"
            android:textColor="@android:color/white"
            android:textSize="30dp"
            android:text="1" />
    
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_column="1"
            android:textColor="@android:color/white"
            android:textSize="30dp"
            android:background="@color/green"
            android:text="2" />
    
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_column="2"
            android:textColor="@android:color/white"
            android:textSize="30dp"
            android:background="@color/blue"
            android:text="3" />
    </TableRow>
    </TableLayout>
    

解释:

android:stretchColumns="*"

表示它根据table布局宽度

平均拉伸所有列

android:shrinkColumns="*"

意味着它缩小所有列

android:shrinkColumns="0,2"

android:stretchColumns="1"

表示第 0 列和第 2 列是换行包含,第 1 列拉伸到可用宽度

android:stretchColumns="0,1,2"

android:shrinkColumns="1"

意味着如果列已经伸展然后收缩不适用

android:shrinkColumns="*"

android:collapseColumns="1"

android:collapseColumns 表示它隐藏给定的列

android:stretchColumns="*"

TextView :- android:layout_column="2"

意思是如果 table 行第一列布局参数不以 0 开头然后空视图添加到行

android:stretchColumns="*"

android:collapseColumns="1"

TextView :- android:layout_column="2"

表示如果table-行第一列布局参数不以0开头,则将空视图添加到行中,但如果折叠列然后添加空视图,则不隐藏该列索引仅隐藏通过显式添加的视图查看

希望对您有所帮助。