#java #android #scrollview #viewflipper
#java #Android #scrollview #viewflipper
Вопрос:
Я создал ViewFlipper
, который перемещается между статьями новостей, которые я анализирую из Интернета.
Все это работает, но когда я прокручиваю текущий элемент вниз, а затем перехожу к следующему / предыдущему элементу, ScrollView
не прокручивается до верха нового элемента статьи. Он просто «зависает» в том месте, где я закончил чтение своего последнего элемента.
В конце моего onClick(View v)
метода у меня есть thisScrollView.scrollTo(0, 0);
Забавно, что это работает в эмуляторе и на Sony Ericsson Xperia, но не на HTC Desire и Galaxy Tab. Это не должно быть связано с версией Android на устройствах, потому что метод доступен с уровня API 1..
У кого-нибудь есть какие-нибудь идеи?
Ответ №1:
Я также пробовал scrollTo(0,0)
использовать ScrollView, содержащий ViewFlipper в качестве дочернего элемента. Результат был не таким уж точным.
Затем я попробовал smoothScrollTo(0, 0);
, как указано ниже
_viewFlipperParentScrollView.fullScroll(View.FOCUS_UP);
_viewFlipperParentScrollView.pageScroll(View.FOCUS_UP);
_viewFlipperParentScrollView.smoothScrollTo(0, 0);
Результат не полностью удовлетворяет, но намного лучше, чем тот, с
_viewFlipperParentScrollView.scrollTo(0, 0);
Ответ №2:
Я обычно использую setSelectionAfterHeaderView для этой цели, и это работает на устройствах HTC.
Комментарии:
1. Я использую scrollview, и он недоступен для этого .. Все еще странно, что один и тот же код работает по-разному на отдельных устройствах
2. Ах, извините, это только для
ListView
.
Ответ №3:
у меня была такая же проблема, и я поместил вызов scoll в runnable и опубликовал его, когда очередь сообщений пользовательского интерфейса станет доступной. Я понятия не имею, почему это работает.
getView().post(new Runnable() {
@Override
public void run() {
myscrollView.fullScroll(ScrollView.FOCUS_UP);
myscrollView.smoothScrollTo(0,0);
}
});
я понятия не имею, зачем мне нужны оба этих вызова, поскольку они делают одно и то же. но это сработало для меня, но выполнение только одного из них не помогло.