android – 列表视图捕捉到项目 - 代码日志

android – 列表视图捕捉到项目

我正在使用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;
    }
}

这个变化不是很顺利,但它的工作。

http://stackoverflow.com/questions/4432261/list-view-snap-to-item

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:android – 列表视图捕捉到项目