Невозможно программно выровнять центральную линейную разметку по центру внутри родительского макета - PullRequest
0 голосов
/ 07 ноября 2018

У меня есть пользовательский линейный макет, который представляет собой красный контур, как показано на изображении, которое я прикрепил по ссылке ниже, которая состоит из текстового обзора и кнопки. Я бы хотел, чтобы текст и кнопки были расположены по центру внутри серого пути, сделав так, чтобы красный путь соответствовал родительскому, но я не могу этого добиться. Раньше я пробовал много способов, устанавливая параметры макета так, чтобы они соответствовали родителям, и программно устанавливал центр тяжести, чтобы сделать эти элементы центром. Но эти способы не сработали. введите описание изображения здесь

Это мой пример кода:

val layoutParams = LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT)
layoutParams.gravity = Gravity.CENTER
grayLayout.addView(redLayout)
grayLayout.layoutParams = layoutParams

Любая подсказка, чтобы помочь мне. Заранее спасибо.

Ответы [ 3 ]

0 голосов
/ 07 ноября 2018
layoutParams.gravity = Gravity.CENTER 

устанавливает гравитацию содержащихся видов в макете.
Так что если вы хотите центрировать серый макет внутри красного макета
применить этот атрибут к красному макету.
Вы также можете сделать это в XML:

android:gravity="center"
0 голосов
/ 07 ноября 2018

Я уже нашел ответ, я забыл установить layoutParams для моего redLayout программно, я установил его только в xml-файле. Поскольку красный макет - это пользовательский макет, установка match_parent внутри xml не будет работать, если мы не установим его программно. Спасибо всем, что нашли время ответить на этот вопрос.

0 голосов
/ 07 ноября 2018

Не используйте одни и те же параметры макета для 2 разных объектов. Создайте новый макет параметров для каждого объекта.

...