Высота Android wrap_content с фиксированным соотношением

Мой XML файл имеет LinearLayout содержащий два ListView с android:height="wrap_content", Тем не менее, когда один из ListView имеет слишком много содержимого, это толкает другой ListView и съесть его пространство. Что я могу сделать, чтобы он прекратил толкать на определенной высоте? Я пытался добавить layout-weight или же maxHeight но это не помогает

3 ответа

Решение

Я решил это, делая это программно. Похоже на то XML не дает большого контроля над динамической высотой. я добавил onLayoutChangedListener как для ListView обнаружить изменение высоты и добавить логику управления высотой в слушателе.

Попробуй это:

               <LinearLayout
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:background="@drawable/green_bg_duplicate"
                android:gravity="center"
                android:orientation="vertical"
                android:weightSum="2">

              <RecyclerView
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:weightSum="1"/>

              <RecyclerView
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:weightSum="1"/>


              </LinearLayout>

Если вы хотите одинаковую сумму для обоих ListViews поровну, просто поместите их в LinearLayout,

LinearLayout будет иметь собственность weightSum=2 в то время как оба ListViews будет иметь в зависимости от LinearLayout orientation property:

Если vertical -> оба ListViews буду иметь android:height="0dp" а также layout-weight=1

Если horizontal -> оба ListViews буду иметь android:width="0dp" а также layout-weight=1

Другие вопросы по тегам