ScrollView игнорирует дочернюю layout_height - PullRequest
11 голосов
/ 07 марта 2011

Получил LinearLayout, содержащий текстовое представление и текст редактирования. LinearLayout находится внутри ScrollView.

ScrollView находится внутри другой иерархии представлений (часть макета рабочего пространства, вроде своего рода домашнего экрана Android), но он заполняет родительский объект, как по высоте, так и по ширине (я установил цвет заливки по-другому, чтобы проверить это).

С помощью атрибутов fill_parent для layout_height и layout_width в LinearLayout, он заполняет только родительские значения width, а не height. Установка фиксированной высоты также не работает / не влияет. По сути, он как будто застрял на wrap_content.

На самом деле, проверяя просмотрщик иерархии, он установлен в match_parent. Как ни странно, весовой коэффициент LL установлен равным -1 (в средстве просмотра иерархии); Весовой коэффициент не установлен явно.

Если есть какая-либо дополнительная информация, которую я могу предоставить, чтобы выяснить, почему он не соблюдает атрибут layout_height, дайте мне знать:)

Заранее спасибо.

Ответы [ 2 ]

21 голосов
/ 08 марта 2011

ScrollView имеет бесконечную высоту (или высоту, определяемую потребностями его дочернего элемента), поэтому layout_height="fill_parent" не имеет смысла для представлений внутри него.

Правка - у Ромена Гая есть интересная статья об этом, и решение действительно заключается в использовании fillViewport.

Попробуйте установить его на самом ScrollView в xml: android:fillViewport="true"

1 голос
/ 08 марта 2011

Для меня это звучит немного неприятно (беспорядок: P)

Но я бы сказал, что поиграйте с атрибутом fillViewPort, который заставит ScrollView занять доступную ему высоту Документы Android fillViewPort

Если вы хотите что-то похожее на домашний экран, я нашел способ заставить точку зрения принять именно эту высоту (см. Стандартное новостное приложение для Android, Tweetdeck или Admob [бета] для получения эффекта скольжения, о котором я говорю) .

Если дело обстоит именно так, дайте мне знать, и я сделаю для этого исходный код.

...