2013-02-18 2 views
0

У меня есть родитель LinearLayout с фиксированным размером. В onCreate() Я загружаю данные и динамически добавляю строки в родительский макет. Всюду загружается от 1 до 10 строк. Я хочу, чтобы строки всегда заполняли родителя, например, если у меня есть 2 строки, каждая строка должна иметь 50% высоты родителя (50% + 50% = 100%). Если у меня есть 3 строки, каждая строка должна использовать 33% родительской высоты и т. Д.Исправлен размер родителя, переменная строка count -> Как изменить размер строк, чтобы они всегда заполняли всю высоту родителя?

Я попытался использовать OnGlobalLayoutListener, чтобы получить высоту родительского элемента и изменить размер строк динамически, к сожалению, когда я запускаю приложение, изменение размера произвольно в лучшем случае. Иногда строки изменяются, иногда они изменяются после заметной задержки около 0,5 секунд.

Есть ли лучший способ достичь этого? Может быть, уже в XML, например, с layout_weight (имейте в виду, что строки добавляются только в код)?

+0

Используйте layout_weight = "1" для каждой строки – Matthew

+0

Спасибо, это невозможно, потому что сами строки - это LinearLayouts, которые не имеют этой функции. Также я думаю, что вес не работает вертикально, хотя я могу ошибаться там. –

+0

Он работает вертикально, это зависит только от ориентации вашего родительского линейного файла. LinearLayouts имеет свойство weight. Посмотрите weightSum здесь: http://developer.android.com/reference/android/widget/LinearLayout.html – Matthew

ответ

1

Вы можете сделать это, установив weight sum на родительский LinearLayout на количество строк, которые у вас внутри. Если это вертикальный список элементов, вы должны установить высоту каждой строки равным 0 и установить ее weight в 1. Если это горизонтальный список элементов, вы делаете то же самое, но устанавливаете ширину в 0 и устанавливаете вес в 1

+0

Он работает даже без установки weightSum. Строки будут правильно изменены, после того как я укажу родителя в надувнике. Спасибо, я знал, что есть простое решение, я думаю, что я просто идиот в настоящий момент ха-ха: D –

Смежные вопросы