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

私はあなたのレイアウトをテストしましたが、最終的には責任weightSumlayout_weight負いません。TableLayoutをコンテンツをラップするように設定すると、が展開layout_weightされ、表示される動作が行われるようになります。TextViewsTableLayout

の幅を設定するTableLayoutFILL_PARENT、問題は解消されます。

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

これは、親に実際に余裕のあるスペースがないときにレイアウトの重みを使用しようとすると( のため)、どういうわけか理にかなっていますwrap_content。これからは何も良いことはありません。

また、それがすべてのレイアウトである場合は、それを改善して(別の) にButton直接追加し、 wrapper の必要性を取り除くことができます。TableLayoutTableRowLinearLayout

于 2012-09-19T09:23:00.600 に答える
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内部のあいまいなビューではなく、別の行としてthe を追加しましたTableLayout
  • layout_widthTableLayoutからwrap_contentに変更fill_parent
于 2012-09-19T10:10:47.793 に答える
0

layout_weight は、スペースを強制的に埋めるようにレイアウトに指示するために使用されます。上記のレイアウトでは、TableRow の重みは 1 に、weightSum は 3 に指定されています。layout_weight と weightSum を削除すると機能します。

于 2012-09-18T18:17:24.627 に答える