Подтвердить что ты не робот

Добавление пустого пространства в конец списка ListView

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

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

Мой вопрос заключается в следующем: есть ли способ добавить пустое пространство в конец экрана в зависимости от размера экрана? Я бы хотел прокрутить, пока последний элемент в списке не окажется в верхней части списка.

4b9b3361

Ответ 1

Я предполагаю, что вы используете расширение BaseAdapter для заполнения списка ListView?

Может быть встроенный способ делать то, что вы просите, но я не знаю об этом. Если вы в конечном итоге создаете его самостоятельно, как насчет этого подхода:

  • Возврат list.size() + EXTRA в getCount()
  • Измените getItem(), чтобы вернуть что-то нормальное, если оно запрашивает элемент не в вашем списке
  • Изменить getView(), чтобы настроить данное представление как простое горизонтальное дополнение с той же высотой, что и остальные ваши представления, если индекс position больше, чем размер вашего списка

Вам нужно будет возиться с константой EXTRA, чтобы узнать, какое значение лучше.

Ответ 2

Самый простой способ добавить пространство - добавить дополнение в xml и установить clipToPadding:"false".

Для RecyclerView

<android.support.v7.widget.RecyclerView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingTop="20dp"
android:paddingBottom="20dp"
android:clipToPadding="false"/>

Для ListView

<ListView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingTop="20dp"
android:paddingBottom="20dp"
android:clipToPadding="false"/>

И то же самое относится к ScrollView

<ScrollView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingTop="20dp"
android:paddingBottom="20dp"
android:clipToPadding="false"/>

Это специально добавляет пустое пространство сверху и снизу, но скрывает пространство при прокрутке представления.

Ответ 3

Попробуйте следующее:

View footer = new View(getActivity());
footer.setLayoutParams( new AbsListView.LayoutParams( LayoutParams.FILL_PARENT, 100 ));
mListView.addFooterView(footer, null, false);