ListView OverScroll

时间:2011-09-14 22:48:13

标签: android listview scrollview

我正在填写listView,然后我想做一些奇特的事情。 我试图在列表中添加一个OverScroll Header,我预期的效果是,如果我过度滚动列表,则会在列表顶部显示一个drawable,因此overscroll标题看起来像列表的隐藏标题。

我在布局xml文件中设置了overScrollHeader和overScrollMode,但没有任何改变。我是在Nexus S上做到的。

那么我对overScrollHeader有什么期望以及如何使它工作?

如果有人可以帮助我,我将非常感激。

2 个答案:

答案 0 :(得分:3)

您可以查看http://jasonfry.co.uk/?id=27。但它不适用于Android版本< 2.3。

答案 1 :(得分:0)

1) create a layout above your listview and status of this layout is gone (here is rlSearch)
2) in your activity, in action scroll, you get action motionEvent and check if listview is on the top and scroll down, you visible gone layout. here is my example and it work for me.
  listView.setOnScrollListener(new AbsListView.OnScrollListener()
        {
            boolean isScrollDown;
            float firstPosition = -1;

            @Override
            public void onScrollStateChanged(final AbsListView view, int scrollState)
            {
                view.setOnTouchListener(new View.OnTouchListener()
                {
                    @Override
                    public boolean onTouch(View v, MotionEvent event)
                    {
                        if (firstPosition == -1)
                        {
                            firstPosition = event.getRawY();
                            return false;
                        }
                        if (event.getRawY() > firstPosition && view.getFirstVisiblePosition() == 0)
                        {
                            isScrollDown = true;
                            firstPosition = -1;
                            rlSearch.setVisibility(View.VISIBLE);
                            return false;
                        }
                        if (event.getRawY() < firstPosition)
                        {
                            isScrollDown = false;
                            firstPosition = -1;
                            rlSearch.setVisibility(View.GONE);
                            return false;
                        }
                        return false;
                    }
                });
            }

            @Override
            public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount)
            {
            }

        });