Добавление пустого пространства в конец списка ListView
У меня есть ListView, который с алфавитными заголовками для каждой буквы. У меня также есть функция индекса, которая приводит заголовки букв в верхнюю часть экрана.
Моя проблема в том, когда я добираюсь до конца списка setSelection не может довести последние несколько заголовков до вершины, потому что он не будет прокручиваться за конец списка.
Мой вопрос заключается в следующем: есть ли способ добавить пустое пространство в конец экрана в зависимости от размера экрана? Я бы хотел прокрутить, пока последний элемент в списке не окажется в верхней части списка.
Ответы
Ответ 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);