2011-11-23 6 views
7

私は画面上のコントロールをタップし、特定の行が画面のTOPになるまでListViewをスクロールしたいと考えています。これはiOSで非常に簡単な機能です。Froyo ListViewのsmoothScrollToPositionFromTop?

私はAPIでこのようなメソッドを見つけました:http://developer.android.com/reference/android/widget/AbsListView.html#smoothScrollToPositionFromTop(int、int) これはAPI Level 11、Honeycombです。これは、携帯電話がIce Cream Sandwichまで使用できないことを意味し、Ice Cream Sandwichをアプリを実行するための最低限の要件として設定するまでは、長い時間がかかるでしょう。

Froyoで同じ機能を利用する方法はありますか?

答えて

4

使用

setSelection (int position) 
+0

、私は誓っただろうにリストをスクロールしませんでした。それは素晴らしいものです、画面の上部に正しい行でリストをジャンプします!私はこのアプローチの潜在的で望ましくない副作用を心配しています。なぜなら、この目的のために意図されたものではなかったからです。突然ジャンプの代わりに滑らかなスクロールをするのはいいでしょう...だから誰でもより良い解決策があります。迅速な答え、gwa、ありがとう、私は必要に応じてそれに戻ります。 :) –

+0

問題はありませんチャド!私は私のアプリでそれを使用し、これまではかなりうまくいった。あなたが何か良いものを見つけた場合に私に教えてください。ありがとう! – gwa

12

次のコードは完璧ではないが、それは多くの場合、作業を行います。私は、それを試してみました

if (android.os.Build.VERSION.SDK_INT >= 11) 
{ 
    listView.smoothScrollToPositionFromTop(p, 0); 
} 
else if (android.os.Build.VERSION.SDK_INT >= 8) 
{ 
    int firstVisible = listView.getFirstVisiblePosition(); 
    int lastVisible = listView.getLastVisiblePosition(); 
    if (p < firstVisible) 
     listView.smoothScrollToPosition(p); 
    else 
     listView.smoothScrollToPosition(p + lastVisible - firstVisible - 2); 
} 
else 
{ 
    listView.setSelectionFromTop(p, 0); 
} 
あなたが知っている

+0

'' smoothScrollToPositionFromTop() ''には既知のバグがあります。問題と解決方法については、http://stackoverflow.com/questions/14479078/smoothscrolltopositionfromtop-is-not-always-working-like-it-should/#20997828を参照してください。 –