如何显示" go down"在列表视图中提示箭头?

时间:2016-12-29 14:49:18

标签: android listview

我有一个 listview ,其中有多行,其长度可能超过智能手机屏幕的大小。我想确定用户知道他必须继续向下滚动以查看列表中的所有条目

所以我想到的第一件事就是在屏幕底部显示模糊和发光的箭头(或者只是为了制作 listview的底部发光)直到用户开始向下滚动。如何显示箭头并设置其行为?

感谢。

3 个答案:

答案 0 :(得分:3)

您可以在视图底部显示ImageView。如果需要,可以将其设置为模糊绘图。

将其添加到layout.xml:

<ImageView
    android:id="@+id/img_arrow"
    android:layout_width="match_parent"
    android:layout_height="40dp"
    android:layout_alignParentBottom="true" />

然后在代码中,如果已绘制最后一项,则检查列表的滚动时间。

listView.setOnScrollListener(new AbsListView.OnScrollListener() {
    @Override
    public void onScrollStateChanged(AbsListView view, int scrollState) {

    }

    @Override
    public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
        if(totalItemCount != listView.getLastVisiblePosition() + 1){
             imageView.setVisible(View.GONE);
        }else{
             imageView.setVisible(View.VISIBLE);
        }
    }
});

答案 1 :(得分:1)

另外,要决定是否显示按钮,您可以在列表视图上设置滚动侦听器,然后调用 list.canScrollVertically(-1)。如果返回值为true,则可以显示按钮。如果为false,则表示用户无需滚动即可查看所有内容,无需显示按钮。

答案 2 :(得分:1)

试试这段代码:

recyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {
        @Override
        public void onScrollStateChanged(RecyclerView recyclerView, int newState) {
            super.onScrollStateChanged(recyclerView, newState);
            int position = mLayoutManager.findFirstVisibleItemPosition();
            if (newState == AbsListView.OnScrollListener.SCROLL_STATE_IDLE) {
                if (position == 0) {
                    imageViewDownArrow.setVisibility(View.VISIBLE);
                } else {
                    imageViewDownArrow.setVisibility(View.GONE);
                }
            }

        }

        @Override
        public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
            super.onScrolled(recyclerView, dx, dy);

        }
    });