У меня есть ListView с текстом редактирования и кнопкой под ним. Когда я нажимаю на элемент listView, появляется клавиатура и нажимает текст редактирования и кнопку. Я хочу, чтобы список переместился к выбранному элементу. Есть идеи? Благодаря
ListView прокручивает выбранный элемент
Ответ 1
Вы можете использовать метод ListView setSelection(int position)
для прокрутки до строки.
Ответ 2
Вы можете использовать ListView smoothScrollToPosition(int position)
, чтобы перейти к определенному местоположению в списке.
Ответ 3
Для прямой прокрутки:
getListView().setSelection(11);
Для гладкой прокрутки:
getListView().smoothScrollToPosition(11);
Прокрутить вверх
getListView().setSelectionAfterHeaderView();
Примечание
попытайтесь вызвать его в сообщении, потому что некогда listview еще не создан, когда вы вызываете его методом
getListView().postDelayed(new Runnable() {
@Override
public void run() {
lst.setSelection(15);
}
},100L);
Ответ 4
Настройте прослушиватель на выбранном элементе списка, затем используйте View.getTop()
или View.getBottom()
при нажатии, чтобы получить его позицию в родительском элементе. Затем вы можете использовать ListView.scrollTo(x, y)
для перехода к элементу списка.
Ответ 5
Вы должны использовать transcript mode
:
getListView().setTranscriptMode(ListView.TRANSCRIPT_MODE_NORMAL);
Ответ 6
Возможно, вы ищете
listView.setSelectionFromTop(position, distanceFromHeader);
Он позиционирует элемент в позиции, указанные пиксели ниже верхней части списка.
Ответ 7
Использование продолжительности дает лучший пользовательский интерфейс. Используйте это, с добавленной продолжительностью. Пролистнет элемент в позиции плавно в верхней части списка.
int duration = 500; //miliseconds
int offset = 0; //fromListTop
listview.smoothScrollToPositionFromTop(position,offset,duration);
- уменьшить продолжительность прокрутки быстрее
Ответ 8
Вы можете использовать
smoothScrollToPosition(position)
Просто увеличьте позицию элемента с 1, и вы получите представление элемента.
getListView().smoothScrollToPosition(position + 1);