У меня есть родитель LinearLayout
с фиксированным размером. В onCreate()
Я загружаю данные и динамически добавляю строки в родительский макет. Всюду загружается от 1 до 10 строк. Я хочу, чтобы строки всегда заполняли родителя, например, если у меня есть 2 строки, каждая строка должна иметь 50% высоты родителя (50% + 50% = 100%). Если у меня есть 3 строки, каждая строка должна использовать 33% родительской высоты и т. Д.Исправлен размер родителя, переменная строка count -> Как изменить размер строк, чтобы они всегда заполняли всю высоту родителя?
Я попытался использовать OnGlobalLayoutListener
, чтобы получить высоту родительского элемента и изменить размер строк динамически, к сожалению, когда я запускаю приложение, изменение размера произвольно в лучшем случае. Иногда строки изменяются, иногда они изменяются после заметной задержки около 0,5 секунд.
Есть ли лучший способ достичь этого? Может быть, уже в XML, например, с layout_weight
(имейте в виду, что строки добавляются только в код)?
Используйте layout_weight = "1" для каждой строки – Matthew
Спасибо, это невозможно, потому что сами строки - это LinearLayouts, которые не имеют этой функции. Также я думаю, что вес не работает вертикально, хотя я могу ошибаться там. –
Он работает вертикально, это зависит только от ориентации вашего родительского линейного файла. LinearLayouts имеет свойство weight. Посмотрите weightSum здесь: http://developer.android.com/reference/android/widget/LinearLayout.html – Matthew