TableLayout - 具有相同layout_weight的TableRows不具有相同的高度

时间:2016-03-28 18:24:29

标签: android android-layout android-tablelayout

我正在尝试创建一个包含3列和4行的TableLayout,我需要所有行都具有相同的高度。

我尝试了很多东西,但结果总是一样的。第三行,即只有两个TextView的行,总是最终成为高度较低的行。

enter image description here

这是布局的xml:

<TableLayout
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="4">

        <TableRow
            android:layout_weight="1"
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:weightSum="7">

            <TextView
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:gravity="center_vertical"
                android:layout_weight="2"
                android:text="Tipo Venta"
                android:textAppearance="@style/TextAppearance.AppCompat.Subhead"/>

            <Spinner
                android:id="@+id/tipoVentaSpinner"
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:layout_weight="4"
                android:textAppearance="@style/TextAppearance.AppCompat.Subhead"
                android:textColor="@color/secondary_text"/>

        </TableRow>

        <TableRow
            android:layout_weight="1"
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:weightSum="7">

            <TextView
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:gravity="center_vertical"
                android:layout_weight="2"
                android:text="Tipo Pago"
                android:textAppearance="@style/TextAppearance.AppCompat.Subhead"
                />

            <Spinner
                android:id="@+id/tipoPagoSpinner"
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:layout_weight="4"
                android:textAppearance="@style/TextAppearance.AppCompat.Subhead"
                android:textColor="@color/secondary_text"
                android:touchscreenBlocksFocus="true"/>

        </TableRow>

        <TableRow
            android:id="@+id/clienteRow"
            android:layout_weight="1"
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:weightSum="7">

            <TextView
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:gravity="center_vertical"
                android:layout_weight="2"
                android:text="Cliente"
                android:textAppearance="@style/TextAppearance.AppCompat.Subhead"/>

            <TextView
                android:id="@+id/clienteTextView"
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:layout_weight="4"
                android:text=""
                android:textAppearance="@style/TextAppearance.AppCompat.Subhead"
                android:textColor="@color/secondary_text"/>


        </TableRow>

        <TableRow
            android:id="@+id/rucRow"
            android:layout_weight="1"
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:weightSum="7">

            <TextView
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:gravity="center_vertical"
                android:layout_weight="2"
                android:text="RUC"
                android:textAppearance="@style/TextAppearance.AppCompat.Subhead"/>

            <EditText
                android:id="@+id/rucEditText"
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:layout_weight="4"
                android:inputType="number"
                android:textAppearance="@style/TextAppearance.AppCompat.Subhead"
                android:textColor="@color/secondary_text"/>

            <ImageButton
                android:id="@+id/buscarClieImageButton"
                android:gravity="center_vertical"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:src="@android:drawable/ic_menu_search"/>

        </TableRow>

    </TableLayout>

上述TableLayout是另一种布局的一部分,这就是为此指定layout_weight为4的原因。

你知道造成这种行为的原因是什么吗?

感谢。

2 个答案:

答案 0 :(得分:1)

好的,我很高兴,因为你选择了我帮忙。我认为它没有显示相同的高度,因为第三行没有Spinner。默认高度Spinners可能大于TextViews,而您的第三行最终只有两个TextViews

所以你可以做一个小技巧,通过这样做可视地显示与第三行相同的第三行高度

<TableLayout
  ...
  android:weightSum="4.5">
 <TableRow
   android:layout_weight="1">...</TableRow>
 <TableRow
   android:layout_weight="1">...</TableRow>
 <TableRow
   android:layout_weight="1.5">...</TableRow>
 <TableRow
   android:layout_weight="1">...</TableRow>
 </TableLayout>

如果它确实没有满足您的要求,那么您可以轻松增加或减少weightsum的{​​{1}}并为行提供匹配的TableLayout属性,使其看起来类似大小。但我认为上述相同的解决方案对您有用。希望这对你有所帮助。

答案 1 :(得分:0)

尝试将每行的所有元素高度设置为wrap_content而不是match_parent。