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

ListView прокручивает выбранный элемент

У меня есть ListView с текстом редактирования и кнопкой под ним. Когда я нажимаю на элемент listView, появляется клавиатура и нажимает текст редактирования и кнопку. Я хочу, чтобы список переместился к выбранному элементу. Есть идеи? Благодаря

4b9b3361

Ответ 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);