我正在使用 ListView 创建一个图片列表,这些照片的大小可以在屏幕上显示 2 到 3 张照片。
我遇到的问题是,当用户停止滚动时,我希望可见列表的第一个项目会捕捉到屏幕顶部,例如,如果滚动结束并且第一个项目的一小部分图片显示时,我们向下滚动列表,使图片始终完全显示,如果显示大部分图片,我们向上滚动列表,使下一张图片完全可见。
有没有办法在 android 中使用 listview 实现这一点?
最佳答案
我找到了一种方法来做到这一点,只需通过实现 ListView.OnScrollListener 来监听滚动并更改滚动结束时的位置
@Override
public void onScrollStateChanged(AbsListView view, int scrollState) {
switch (scrollState) {
case OnScrollListener.SCROLL_STATE_IDLE:
if (scrolling){
// get first visible item
View itemView = view.getChildAt(0);
int top = Math.abs(itemView.getTop()); // top is a negative value
int bottom = Math.abs(itemView.getBottom());
if (top >= bottom){
((ListView)view).setSelectionFromTop(view.getFirstVisiblePosition()+1, 0);
} else {
((ListView)view).setSelectionFromTop(view.getFirstVisiblePosition(), 0);
}
}
scrolling = false;
break;
case OnScrollListener.SCROLL_STATE_TOUCH_SCROLL:
case OnScrollListener.SCROLL_STATE_FLING:
Log.i("TEST", "SCROLLING");
scrolling = true;
break;
}
}
变化不是那么顺利,但它确实有效。
关于android - ListView 捕捉到项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4432261/