Mark D jest poprawna, że jeśli chcesz, aby wygładzić przewiń ListView
w ListFragment
, musisz zadzwonić pod numer getListView()
na ListFragment
, a następnie zadzwonić pod numer smoothScrollToPosition(int)
na zwróconym ListView
. Oczywiście działa to tylko na poziomie API 8, ponieważ wtedy smoothScrollToPosition(int)
zostało wprowadzone do AbsListView
, nadklasy ListView
.
Przypuszczam, że można spojrzeć na kod w AbsListView.java
, aby zobaczyć, co robi i spróbuj go replikować w swojej własnej podklasie: AbsListView
lub ListView
. Od razu wiadomo, że smoothScrollToPosition(pos)
po prostu wywołuje start(pos)
na instancji klasy wewnętrznej PositionScroller
, ale wydaje się nieco skomplikowane replikować to zachowanie we własnej podklasie, ponieważ PositionScroller
zostaje wywołane z kilku innych miejsc, takich jak onDetachedFromWindow()
, public void onWindowFocusChanged(boolean hasWindowFocus)
. Nie jest dla mnie jasne, w jaki sposób można by całkowicie zintegrować zachowanie PositionScroller z podklasą w oparciu o wersję API 7 w wersji AbsListView
.
Jeśli to była moja decyzja, z interfejsem API 7 i wcześniejszym składającym się na mniej niż 8% urządzeń z dostępem do Android Market w najnowszej wersji data set, po prostu puntuję i robię coś prostszego, jak setSelectionFromTop
, gdy interfejs API jest niższy niż 8 (wykryty przez Build.VERSION.SDK_INT).
Dzięki za pełną odpowiedź :) – Warpzit
To też zadziałało! Dzięki – Aci89