Froyo ListView的smoothScrollToPositionFromTop?

时间:2011-11-23 17:09:52

标签: android

我想点击屏幕上的控件并让ListView滚动,直到给定的行位于屏幕的顶部,这一功能在iOS中看起来非常简单。

我确实在API中找到了这样一个方法:http://developer.android.com/reference/android/widget/AbsListView.html#smoothScrollToPositionFromTop(int,int) 但是,这适用于API Level 11,Honeycomb。这意味着手机直到冰淇淋三明治才能使用它,并且将冰淇淋三明治设置为运行应用程序的最低要求将是很长很长的时间。

有没有办法在Froyo中获得相同的功能?

2 个答案:

答案 0 :(得分: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);
}

答案 1 :(得分:4)

使用

setSelection (int position)