Проблема линейного расположения во время выполнения - PullRequest
0 голосов
/ 02 мая 2010

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

У меня есть линейный макет с текстом, еще один линейный макет с изображением. И еще один линейный макет, который несет кнопки, которые создаются в цикле for. У меня есть основной макет, выровненный по вертикали, который добавляет текст, изображение и макет кнопок в указанном порядке. Чтобы наконец сгенерировать что-то вроде этого:

Текст .... Изображение ... Button1 Button2 Button3 ....

Проблема в том, что количество кнопок определяется во время выполнения, поэтому, если имеется более 4 кнопок, 5-я кнопка отображается очень маленькой. Кроме того, когда я наклоняю телефон, я получаю только текст и изображение, показываемое, но никакие кнопки, потому что изображение покрывает весь экран.

Макетирование мне кажется довольно сложным, любая помощь приветствуется!

Спасибо George

1 Ответ

0 голосов
/ 02 мая 2010

Вам не нужно переносить отдельные представления в линейный макет, поэтому добавьте текст и изображение непосредственно в корневой линейный макет. Вы можете рассмотреть возможность использования относительной компоновки вместо линейной для корня.

Использование FILL_PARENT и WRAP_CONTENT для ширины или высоты LayoutParams может дать некоторые полезные результаты. Например, использование FILL_PARENT для высоты изображения может уменьшить его, чтобы оставить место для кнопок.

Будьте осторожны с LayoutParams, потому что их много, и следует использовать только тот, который соответствует классу ViewGroup.

Один из вариантов - реализовать собственный метод onLayout в пользовательской ViewGroup. Вам будут переданы размеры, с которыми вы должны работать, и сможете расположить все виды по своему усмотрению.

...