如何减少行高。 (TableLayout>的TableRow)

时间:2016-01-26 15:01:26

标签: android android-layout android-tablelayout

TableLayout中行的高度太高,高于允许文本所需的行数。 我玩了许多不同的价值观,但无法做到正确。 According to the docsTableLayout的子级默认值为wrap_content, 但行高似乎不止于此。 还说它的宽度值总是wrap_content, 所以没有必要设置它。 通过"孩子"这是否只意味着直接的孩子(在这种情况下为TableRow), 或者全部在下面(在这种情况下是TextView)?

如何降低行高?

<?xml version="1.0" encoding="utf-8"?>
<TableLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/tableLayout1"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:shrinkColumns="*"
    android:stretchColumns="*"
    android:paddingLeft="10dp"
    android:paddingRight="10dp">

<TableRow
    android:id="@+id/tableRow1"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:layout_weight="1">
    <TextView
        android:id="@+id/textViewNameLabel"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:textStyle="bold"
        android:typeface="sans"
        android:textSize="18sp"
        android:text="@string/name_string"
        android:gravity="start">
    </TextView>
    <TextView
        android:id="@+id/textViewName"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:typeface="sans"
        android:textSize="18sp"
        android:text="Michael Foucalt"
        android:gravity="start">
    </TextView>
    <TextView
        android:id="@+id/textViewTitleLabel"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:textStyle="bold"
        android:typeface="sans"
        android:textSize="18sp"
        android:text="@string/title_string"
        android:gravity="start"
        android:padding="10dp">
    </TextView>
    <TextView
        android:id="@+id/textViewTitle"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:typeface="sans"
        android:textSize="18sp"
        android:text="Philosopher"
        android:gravity="start">
    </TextView>
</TableRow>

<TableRow
    android:id="@+id/tableRow2"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:layout_weight="1">
    <TextView
        android:id="@+id/textViewPhoneLabel"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:textStyle="bold"
        android:typeface="sans"
        android:textSize="18sp"
        android:text="@string/phone_string"
        android:gravity="start">
    </TextView>
    <TextView
        android:id="@+id/textViewPhone"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:typeface="sans"
        android:textSize="18sp"
        android:text="555.111.2222"
        android:gravity="start">
    </TextView>
    <TextView
        android:id="@+id/textViewFaxLabel"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:textStyle="bold"
        android:typeface="sans"
        android:textSize="18sp"
        android:text="@string/fax_string"
        android:gravity="start"
        android:padding="10dp">
    </TextView>
    <TextView
        android:id="@+id/textViewFax"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:typeface="sans"
        android:textSize="18sp"
        android:text="555.123.4567"
        android:gravity="start">
    </TextView>
</TableRow>

<TableRow
    android:id="@+id/tableRow3"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:layout_weight="1">
    <TextView
        android:id="@+id/textViewAddressLabel"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:textStyle="bold"
        android:typeface="sans"
        android:textSize="18sp"
        android:text="@string/address_string"
        android:gravity="start">
    </TextView>
    <TextView
        android:id="@+id/textViewAddress"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:typeface="sans"
        android:textSize="18sp"
        android:text="555 Champs Elysses"
        android:gravity="start">
    </TextView>
    <TextView
        android:id="@+id/textViewCityLabel"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:textStyle="bold"
        android:typeface="sans"
        android:textSize="18sp"
        android:text="@string/city_string"
        android:gravity="start"
        android:padding="10dp">
    </TextView>
    <TextView
        android:id="@+id/textViewCity"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:typeface="sans"
        android:textSize="18sp"
        android:text="Paris"
        android:gravity="start">
    </TextView>
</TableRow>
</TableLayout>

以下是显示当前显示和所需显示的图像:

Current

Desired

1 个答案:

答案 0 :(得分:3)

请删除:

android:layout_weight="1"
来自TableRow元素的

。它将导致行沿着屏幕的长度均匀拉伸。

修改 这个例子中的子节点都是TableRow和TextView。这就是为什么做这样的事情是合法的:

<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <TableRow android:id="@+id/tableRow1">

    <TextView
         android:id="@+id/textViewNameLabel"
         android:gravity="start"
         android:text="@string/name_string"
         android:textSize="18sp"
         android:textStyle="bold"
         android:typeface="sans" />

         .
         .
         .

    </TableRow>
</TableLayout>

通过包装在TableLayout

中,可以自动为它们的宽度和高度属性分配wrap_content。

编辑2: 从所有TextView组件中删除:

android:padding="10dp"