Высота 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