0

在我的应用程序中,我正在以编程方式构建 TableView。表格由一系列单行组成,其中一个文本视图通常包含一个长文本(大约是屏幕宽度的 80%),该文本跨越具有 5 个文本视图的以下行。这很好用,但不幸的是,我还需要在这些行中放置一个带有一个文本框的复选框。由于文本框内容的长度,此复选框必须放在右侧并占用尽可能少的宽度。但是,如果我使文本框仅跨越 4 列,并将复选框放在为第 5 列保留的空间中,则复选框的宽度太大,而文本则不够(它会被包装,这很糟糕)。我准备了一个示例来说明这种情况:

+---------------------------------------------------+
|TextView spanning over 5 columns below             |   <- 1 column spans over 5
|-----+------+---------------+------+---------------|
|col1 | col2 |Column number 3| Col4 | Column number5|   <- 5 columns
|-----+------+---------------+------+---------------|
|This spans over 4 column - not enou|[V]            |
|gh                                 |               |   <- 2 columns, 1st spans over 4
|-----+------+---------------+------+---------------|
|col1 | col2 |Column number 3| Col4 | Column number5|   <- 5 columns
|-----+------+---------------+------+---------------|
|This is what I need-checkbox maximum to right  |[V]|   <- 2 columns
+---------------------------------------------------+

最后一行显示了我需要它的样子。在 HTML 中,我只会在一行中嵌套另一个表,并在这个新表中相应地拆分宽度,但这种情况似乎不可能在 Android TableLayout 中构建。

有谁知道如何实现这一目标?

4

1 回答 1

0

另一个尝试 ;) 更改在表格布局的属性、第二行的文本视图和复选框的 layout_gravity 中。我想使用这些元素,您将能够以编程方式执行相同的操作;)

<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:stretchColumns="0,1,2,3" >

    <TableRow
        android:id="@+id/tableRow"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content" >

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center_vertical"
            android:text="@string/app_name" />

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center_vertical"
            android:text="@string/app_name" />

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center_vertical"
            android:text="@string/app_name" />

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center_vertical"
            android:text="@string/app_name" />

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center_vertical"
            android:text="@string/app_name" />
    </TableRow>

    <TableRow
        android:id="@+id/tableRow"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content" >

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center_vertical"
            android:layout_span="4"
            android:text="@string/app_name" />

        <CheckBox
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="right" />
    </TableRow>

</TableLayout>

查看表格的 android:shrinkColumns 和 android:stretchColumns 属性。您可以使用以下方法编辑此属性:

setColumnShrinkable(int columnIndex, boolean isShrinkable)
setColumnStretchable(int columnIndex, boolean isStretchable)

它应该使用这种方法工作(我没有测试过)。

于 2012-04-05T15:07:37.330 回答