Проблема с макетом Android ScrollView - PullRequest
11 голосов
/ 06 октября 2009

У меня есть несколько ListViews в LinearLayout. Он перечисляет вещи по дням, поэтому у меня есть TextView, содержащий «Sunday:», за которым следует список элементов, затем «Monday» TextView и т. Д. Отлично работает, но не помещается на экране. Поэтому я добавил ScrollView в качестве родителя LinearLayout. Теперь он прокручивается, но у всех ListViews есть место для 2 записей, независимо от того, имеют они 0 или 3 записи. Что-то в добавлении родителя ScrollView приводило к тому, что ListViews не изменяли размер динамически. Я попытался вызвать requestLayout () для ScrollView после того, как адаптеры списка заполнили свои представления, но это ничего не сделало. Есть идеи?

Edit: Из http://www.anddev.org/viewtopic.php?p=25194 и других ссылок кажется, что ListViews внутри ScrollView обрабатываются неправильно. У кого-нибудь есть хорошее предложение для реализации списка списков?

Ответы [ 2 ]

15 голосов
/ 07 октября 2009

Меня тоже интересует эта тема, поэтому я провел небольшое исследование. Первое: никогда не помещайте ListView в ScrollView (как вы узнали сами). К сожалению, поиск этой проблемы не приводит к каким-либо решениям, поэтому я попробовал мое предложение из моего комментария выше.

Я реализовал собственный ListAdapter и поместил ListViews в один родительский ListView. Это не работает (приводит к той же проблеме, что и с ScrollView). Говоря с ребятами на официальном android-irc # android-dev на freenode, они сказали мне, что поместить ListViews в ListView так же плохо, как и даже хуже, чем поместить их в ScrollView. К сожалению, они также не смогли помочь мне с проблемой.

Кажется, есть только один способ достичь того, что вы хотите сделать; см. ответ на этот похожий вопрос Прокрутка с помощью нескольких списков просмотра для Android . Идея состоит в том, чтобы объединить все ListViews в один с помощью специального адаптера и вставить какие-то заголовки между записями. Это абсолютно выполнимо, но может потребовать особых усилий.

6 голосов
/ 04 октября 2010

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

Я бы посоветовал вам использовать для этого расширяемый ListView. Это решит все ваши проблемы. У вас могут быть основные / родительские имена, как у недели, и когда вы ее расширите, у вас будет список записей на этот конкретный день / неделю / что угодно. Кроме того, вам не придется беспокоиться о прокрутке, так как об этом заботится android:)

Если вы ДЕЙСТВИТЕЛЬНО попробуете это, то, пожалуйста, дайте мне знать, если это поможет вашей проблеме Попробуйте найти примеры в Expandable ListView.

изменить: посмотрите пример здесь - http://mylifewithandroid.blogspot.com/2008/05/expandable-lists.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...