【问题标题】:How to force a TableRow to wrap_content?如何强制 TableRow 包装内容?
【发布时间】:2013-04-23 15:10:21
【问题描述】:

我正在尝试构建一个非常简单的 TableLayout,它有 2 列和不确定的行数。 在第一列中,我放置了一个 TextView,它必须写成 2 行:

    <string name="param_period_data_rec_text">Période d\'acquisition des données\n(secondes)</string>

在第二列中,我放了一个 EditText。

我的问题是:EditText 的高度约为 1 行半文本,而 TableRows 环绕它,隐藏了 TextView 第二行的一半。

当然,我希望 TextView 能够完全显示。我该怎么办?

<TableLayout
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_margin="30dp"
    android:background="@color/blanc"
    android:orientation="horizontal"
    android:padding="20dp" >

    <TableRow
        android:layout_width="fill_parent"
        android:layout_height="wrap_content" >

        <TextView
            android:id="@+id/param_frequence_data_rec_text"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/param_period_data_rec_text"
            android:textColor="@android:color/black"
            android:textSize="20sp" />

        <EditText
            android:id="@+id/param_frequence_data_rec_input"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/param_period_data_rec_input"
            android:textColor="@android:color/black"
            android:textSize="20sp" />
    </TableRow>

</TableLayout>

【问题讨论】:

    标签: android android-layout android-tablelayout


    【解决方案1】:
    <TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="horizontal">
    
    <TableRow
        android:layout_width="fill_parent"
        android:layout_height="wrap_content" >
    
        <TextView
            android:id="@+id/param_frequence_data_rec_text"
            android:layout_width="0dp"
            android:layout_height="fill_parent"
            android:layout_weight="1"
            android:text="@string/param_period_data_rec_text"
            android:textColor="@android:color/black"
            android:textSize="20sp" />
    
        <EditText
            android:id="@+id/param_frequence_data_rec_input"
            android:layout_width="0dp"
            android:layout_height="fill_parent"
            android:layout_weight="1"
            android:text="editText"
            android:textColor="@android:color/black"
            android:textSize="20sp" />
    </TableRow>
    

    更新:textVeiw 和 editText width = 0dp,让 layout_weight="1" 属性可以工作

    【讨论】:

    • 您的解决方案有效。这不完全是我问的,但实际上,我认为它更好,因为它根据字符串的长度调整列数
    • 无需为 TableRow 指定 layout_width 或 layout_height(它只会让您的代码 sn-p 更加混乱),根据此:“TableLayout 的子项无法指定 layout_width 属性。宽度始终为MATCH_PARENT。但是,layout_height 属性可以由孩子定义;默认值为 WRAP_CONTENT。如果孩子是 TableRow,则高度始终为 WRAP_CONTENT。 developer.android.com/reference/android/widget/TableLayout.html
    【解决方案2】:

    尝试在您的TextView 中将android:layout_height="wrap_content" 设置为fill_parent

    【讨论】:

    • 它似乎可以工作,但是当我删除它时它仍然可以工作......也许我只是需要清理我的项目
    【解决方案3】:

    尝试添加

    android:minLines="2"
    

    到描述需要至少有两行的小部件的标签。 wrap_content(你已经拥有)应该负责其余的工作。

    【讨论】:

    • 它似乎可以工作,但是当我删除它时它仍然可以工作......也许我只是需要清理我的项目
    猜你喜欢
    • 1970-01-01
    • 2013-05-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-31
    • 1970-01-01
    • 2015-04-11
    • 1970-01-01
    相关资源
    最近更新 更多