2016-03-28 2 views
1

Я пытаюсь создать TableLayout с 3 столбцами и 4 строками, и мне нужно, чтобы все строки имели одинаковую высоту.TableLayout - TableRows с одинаковым layout_weight не имеют одинаковой высоты

Я пробовал много вещей, но результат всегда один и тот же. Третья строка, которая имеет только два TextViews, всегда заканчивается тем, что имеет строку с меньшей высотой.

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 для него.

У вас есть идеи, что вызывает подобное поведение?

Спасибо.

+0

Возможно, вам нужно установить высоту для каждой строки, иначе это будет высота содержимого. Попробуйте match_parent для всех элементов в TR и установите каждый TR на фиксированный dp. Также убедитесь, что элементы в TR не имеют никаких нежелательных верхних и нижних полей, которые приводят к увеличению высоты. – Onimusha

+0

Привет, почему бы вам не дать никаких отзывов? Есть ли еще какая-то проблема, если так любезно рассказать. –

+0

Извините @ShreeKrishna Я догнал кое-что на работе. TBH ваше решение было единственным, что было близко к тому, что я хочу достичь (похоже, что все строки одного размера, но я не могу точно сказать) Не могли бы вы объяснить мне, как это работает? – Axel

ответ

0

Попробуйте настроить все высоты элементов каждой строки на wrap_content вместо match_parent.

+0

Извините, я уже пробовал это, и результат точно такой же :( – Axel

+0

Возможно, вы можете заменить TableLayout для GridLayout. Вам нужно будет управлять позициями макета программно, но я думаю, вы избежите этой разницы. Если у меня есть время, я попытаюсь сделать прото и загрузить его. –

1

Хорошо, я был рад, потому что вы выбрали меня за помощь. Я думаю, что это не показывает ту же самую высоту, потому что в третьей строке нет Spinner. Высота по умолчанию Spinners может быть больше TextViews, а ваш третий ряд заканчивается только двумя TextViews.

Так что вы можете сделать небольшой трюк, чтобы визуально показать ту же высоту 3-го ряда, как другие, делая это

<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 от TableLayout и дать соответствие атрибутам для строк, чтобы они выглядели схожими размерами. Но я думаю, что то же самое решение будет работать для вас. Надеюсь, это поможет вам немного.

Смежные вопросы