Android, как добавить список в виде прокрутки - PullRequest
2 голосов
/ 24 января 2012

У меня есть требование к макету, как показано ниже,

Textview
TextView
ListView
Edit Text
Button

Поскольку listview не может поместиться в альбомной ориентации, я хочу иметь представление списка далее (т. Е. listview, edittext и button) для представления с прокруткой.

Я знаю, что просмотр списка нельзя использовать внутри scrollview, но есть ли способ сделать это?Любой рабочий пример будет оценен.

Ответы [ 4 ]

1 голос
/ 24 января 2012

99% разработчиков Android считают, что мы не должны использовать ListView внутри ScrollView, поскольку оба являются представлениями scrollbale, и только родительские элементы могут быть прокручиваемыми, поэтому он оборачивает ListView.

Это на 100% правильно. Но мы должны использовать хитрости, чтобы избежать этого и достичь наших требований.

Я нашел один трюк в сети, который устанавливает высоту ListView на основе элементов списка. Просто проверьте ссылку ниже, вы получите пример кода для расчета высоты ListView для размещения внутри ScollView.

Расчет высоты Android ListView для размещения в ScrollView

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

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

<ScrollView >
    <LinearLayout vertical>
        <TextView />
        <TextView />
        <ListView />
        <EditText />
        <Button />
    </LinearLayout>
</ScrollView>

Я видел одно видео на YouTube, Android ListView внутри ScrollView , которое показывает, что мы можем ограничить высоту просмотра списка, можно прокручивать и использовать внутри ScrollView. Я не знаю, как программист достиг этого.

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

0 голосов
/ 24 января 2012

Лучшее решение для этого типа макета состоит в том, что вы должны использовать относительную компоновку и исправить ваши EditText и Button в нижней части экрана, как у меня в моем списке (см. Изображение ниже), чтобы выне нужно добавлять ScrollView в ваш макет. enter image description here

0 голосов
/ 24 января 2012

Вид того, как делать то, что вы хотите, без просмотра прокрутки.

  • Напишите специальный адаптер для вашего ListView
  • Предположим, у вас есть массив из n элементов, которые вы хотите заполнить ListView, а затем EditText и Button. Так что количество элементов будет n + 2
  • В getView для позиции n + 1 вернуть представление, которое имеет поле EditText вместо обычного элемента списка
  • Для позиции n + 2 вернуть a Button.

Не пытайтесь обернуть вокруг ListView с ScrollView, вам понадобится множество проблем.

Примечание: я не проверял это, даже не уверен, что это будет работать. Дайте мне знать, если это работает. :)

0 голосов
/ 24 января 2012

Просто сделайте это

<ScrollView>
          <LinearLayout>
                      <ListView>
          </LinearLayout>             
</ScrollView>

Затем добавьте

EditText

Кнопка

...