2

美好的一天,我在下面的图片中遇到了麻烦。如您所见,表格行占用了太多空间,我想减少它们,因为它们下面还有其他视图小部件。我怎样才能做到这一点?谢谢你。

在此处输入图像描述

这是我的xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical">

    <TableLayout 
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:orientation="vertical"
    android:weightSum="3"
    android:padding="8dp"
    android:background="@drawable/rounded_date_filter">

  <TableRow
      android:orientation="horizontal"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:layout_weight="1">

 <TextView
  android:id="@+id/datefilter_text_from_id"
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:gravity="center"
  android:layout_weight="1"
  android:layout_marginLeft="10dp"
  android:layout_marginTop="10dp"
  android:text="@string/from_text">
</TextView>
<TextView
  android:id="@+id/datefilter_text_to_id"
  android:layout_width="10dp"
  android:layout_height="wrap_content"
  android:layout_weight="1"
  android:layout_marginLeft="40dp"
  android:layout_marginTop="10dp"
  android:text="01-01-2012">
</TextView>
</TableRow>

  <View
      android:layout_width="fill_parent"
      android:layout_height="1px"
      android:background="#606060">
  </View>

<TableRow>
 <TextView
  android:id="@+id/datefilter_text_from_id"
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:gravity="center"
  android:layout_weight="1"
  android:layout_marginLeft="10dp"
  android:layout_marginTop="10dp"
  android:text="@string/to_text">
</TextView>

<TextView
  android:id="@+id/datefilter_text_to_id"
  android:layout_width="10dp"
  android:layout_height="wrap_content"
  android:layout_weight="1"
  android:layout_marginLeft="40dp"
  android:layout_marginTop="10dp"
  android:text="01-09-2012">
</TextView>
</TableRow>

      <View
      android:layout_width="fill_parent"
      android:layout_height="1px"
      android:background="#606060">
  </View>

    <TableRow>
 <TextView
  android:id="@+id/datefilter_text_from_id"
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:gravity="center"
  android:layout_weight="1"
  android:layout_marginLeft="10dp"
  android:layout_marginTop="10dp"
  android:text="@string/groupby">
</TextView>

<TextView
  android:id="@+id/datefilter_text_to_id"
  android:layout_width="10dp"
  android:layout_height="wrap_content"
  android:layout_weight="1"
  android:layout_marginLeft="40dp"
  android:layout_marginTop="10dp"
  android:text="day">
</TextView>
</TableRow>

</TableLayout>

    <Button
        android:id="@+id/reset_filter_button_id"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="@string/reset_filters">
    </Button>
</LinearLayout>
4

3 回答 3

1

我已经测试了你的布局,最后它看起来weightSum并不layout_weight负责。设置TableLayout包装内容和layout_weight似乎TextViews扩展TableLayout并使其具有您看到的行为。

如果您将宽度设置为TableLayout问题FILL_PARENT应该消失:

// ...
<TableLayout 
    android:layout_width="fill_parent"
// ...

这在某种程度上是有道理的,因为当父级确实没有空间可用时(因为wrap_content),您尝试使用布局权重,这不会带来任何好处。

此外,如果这就是您的全部布局,您可以改进它并将其Button直接添加到TableLayout(在另一个TableRow)中,从而消除对 wrapper 的需要LinearLayout

于 2012-09-19T09:23:00.600 回答
0

layout_weight 用于告诉布局强制填充空间。在上面的布局中,TableRow 的权重被指定为 1,weightSum 被指定为 3。删除 layout_weight 和 weightSum 它将起作用。

于 2012-09-18T18:17:24.627 回答
0

这是更正的布局文件:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

    <TableLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical"
        android:padding="8dp"
        android:weightSum="3" >

        <TableRow
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:orientation="horizontal" >

            <TextView
                android:id="@+id/datefilter_text_from_id"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginLeft="10dp"
                android:layout_marginTop="10dp"
                android:layout_weight="1"
                android:gravity="center"
                android:text="From" >
            </TextView>

            <TextView
                android:id="@+id/datefilter_text_to_id"
                android:layout_width="10dp"
                android:layout_height="wrap_content"
                android:layout_marginLeft="40dp"
                android:layout_marginTop="10dp"
                android:layout_weight="1"
                android:text="01-01-2012" >
            </TextView>
        </TableRow>

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

            <View
                android:layout_width="fill_parent"
                android:layout_height="1px"
                android:layout_weight="1"
                android:background="#606060" >
            </View>
        </TableRow>

        <TableRow>

            <TextView
                android:id="@+id/datefilter_text_from_id"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginLeft="10dp"
                android:layout_marginTop="10dp"
                android:layout_weight="1"
                android:gravity="center"
                android:text="To" >
            </TextView>

            <TextView
                android:id="@+id/datefilter_text_to_id"
                android:layout_width="10dp"
                android:layout_height="wrap_content"
                android:layout_marginLeft="40dp"
                android:layout_marginTop="10dp"
                android:layout_weight="1"
                android:text="01-09-2012" >
            </TextView>
        </TableRow>

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

            <View
                android:layout_width="fill_parent"
                android:layout_height="1px"
                android:layout_weight="1"
                android:background="#606060" >
            </View>
        </TableRow>

        <TableRow>

            <TextView
                android:id="@+id/datefilter_text_from_id"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginLeft="10dp"
                android:layout_marginTop="10dp"
                android:layout_weight="1"
                android:gravity="center"
                android:text="Group By" >
            </TextView>

            <TextView
                android:id="@+id/datefilter_text_to_id"
                android:layout_width="10dp"
                android:layout_height="wrap_content"
                android:layout_marginLeft="40dp"
                android:layout_marginTop="10dp"
                android:layout_weight="1"
                android:text="day" >
            </TextView>
        </TableRow>
    </TableLayout>

    <Button
        android:id="@+id/reset_filter_button_id"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="My Button" >
    </Button>

</LinearLayout>

和输出布局:

在此处输入图像描述

我注意到并因此更正的问题是:

  • 添加了row separation作为单独的行,而不是里面的模棱两可的视图TableLayout
  • layout_width将ofTableLayout从更改wrap_contentfill_parent
于 2012-09-19T10:10:47.793 回答