У меня есть ScrollView -> ConstraintLayout, который занимает практически весь экран. У меня есть несколько пунктов, выложенных здесь на экране, а также меню, которые еще не занимают весь вид. Меню поменяет фрагменты в контейнере, который ограничен в нижней части макета ограничения. Теперь проблема, с которой я сталкиваюсь, заключается в том, что я не могу найти способ ограничить контейнер до конца страницы и установить его высоту равным match_constraint, а также увеличить его на основе размера от высоты фрагмента внутри контейнер, позволяющий затем прокручивать страницу. Я могу настроить контейнер на обертывание контента, и если его достаточно, он отлично работает, но тогда, если контент меньше остальной части экрана, он не заполняет экран и не рисует фон контейнеров снизу, как я. хотел бы.
val tc = super.requireContext()
val scrollView = ScrollView(tc)
scrollView.id = View.generateViewId()
scrollView.isFillViewport = true
scrollView.layoutParams = ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT)
val thisLayout = ConstraintLayout(tc)
thisLayout.id = View.generateViewId()
thisLayout.layoutParams = ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT)
scrollView.addView(thisLayout)
val menuLayout = ManageableMenu(tc,listOf(
ManageableMenu.ManageableMenuItem("Item 1", Fragment()),
ManageableMenu.ManageableMenuItem("Item 2", Fragment()),
ManageableMenu.ManageableMenuItem("Item 3", Fragment())
))
menuLayout.listener = this
val menuLayoutConstraint = menuLayout.layoutParams as ConstraintLayout.LayoutParams
menuLayoutConstraint.topToBottom = thisLayout.id
menuLayoutConstraint.startToStart = thisLayout.id
menuLayoutConstraint.endToEnd = thisLayout.id
menuLayout.setPadding(0, 0, 0 , convertToDP(10, tc))
thisLayout.addView(menuLayout)
val fragmentContainer = FrameLayout(tc)
fragmentContainer.id = View.generateViewId()
fragmentContainer.setBackgroundColor(Color.parseColor("#262626"))
val fragmentContainerLayout = ConstraintLayout.LayoutParams(ConstraintLayout.LayoutParams.MATCH_CONSTRAINT, ConstraintLayout.LayoutParams.MATCH_CONSTRAINT)
fragmentContainerLayout.topToBottom = menuLayout.id
fragmentContainerLayout.leftToLeft = thisLayout.id
fragmentContainerLayout.rightToRight = thisLayout.id
fragmentContainerLayout.bottomToBottom = thisLayout.id
thisLayout.addView(fragmentContainer, fragmentContainerLayout)
Теперь это прекрасно работает без содержания. Тем не менее, когда я добавляю в фрагментContainer представление, которое выше, чем ограниченная высота контейнера, я не могу прокрутить.
Когда я устанавливаю для fragContainers height значение "WRAP_CONTENT", оно отлично работает, когда содержимое больше, чем остальная часть экрана, прокрутка и все остальное. Но если нет или ограничено, содержание. Фон контейнеров не растягивается до нижней части экрана и выглядит как мусор.
Должен быть какой-то способ заставить эту работу работать правильно? Я пробовал много разных свойств на LayoutParams, таких как minConstrainedHeight и еще много чего, но ничего не работает. Заранее спасибо!