2014-01-15 5 views
0

У меня есть приложение с ListView. В этом ListView есть Progressbar. Когда я нажимаю на эту Progressbar, тогда он показывает скрытую компоновку (этот макет содержит textview с лирикой). Так как я нажимаю на последний Progressbar, тогда он показывает скрытый макет, но мне нужно прокручивать вручную. Я хочу, чтобы прокрутка была автоматически. Пожалуйста, помогите мне.Как автопрокат в нижней части списка?

ответ

2

Попробуйте что-то вроде этого:

private void scroll2bottom() { 
    yourListView.post(new Runnable() { 
     @Override 
     public void run() { 
      yourListView.setSelection(yourListAdapter.getCount() - 1); 
     } 
    }); 
} 
+0

Нет, это не работает, я просто вызываю этот метод в onItemClick(). –

+0

Подтвердите, что вы действительно вводите этот метод, я использовал этот код в нескольких проектах, и он всегда работал! – nKn

+0

Большое спасибо @NKN. Теперь он работает .... :-) –

2

Возможно, вы найдете smoothScrollByOffset() или smoothScrollBy() методы ListView. В частности, smoothScrollBy() занимает как прокрутку, так и продолжительность, в течение которой должна выполняться анимация прокрутки. С помощью этого метода вы можете точно контролировать, как далеко прокручивать список.

1

в макете вашей ListView просто использовать transcriptMode

Элемент управления ListView имеет BUILTIN АВТОПРОКРУТКА

андроида: transcriptMode = "нормальный" witll прокрутки при его внизу, но не тогда, когда вы прокрутили

и настройка всегда. Прокрутка всегда прокручивается на нижнюю сторону.

, а затем вы можете установить андроид: stackFromBottom = «истина», чтобы вырасти из нижней

+0

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

0

Try таким образом:

lv.setTranscriptMode(ListView.TRANSCRIPT_MODE_ALWAYS_SCROLL); 
lv.setStackFromBottom(true); 
+0

Вам, вероятно, стоит попробовать и объяснить немного больше. – albertjan

0

прокрутить ListView программно вы можете использовать его smoothScrollByOffset (int offset) или smoothScrollToPosition (int position), вы можете найти here документацию о виджете ListView и о том, как использовать эти методы.

Смежные вопросы