"回到顶部"滚动后仅显示按钮

时间:2017-02-22 12:02:16

标签: android android-recyclerview

我有RecyclerView显示图片,并设置FloatingActionButton让我的用户回到视图的顶部,如下所示:

// On FAB click, scroll back to the top of the layout
private void handleUp() {
    FloatingActionButton FAB = (FloatingActionButton) view.findViewById(R.id.upFAB);
    FAB.setOnClickListener(view1 -> {
        if (recyclerView != null) {
            recyclerView.smoothScrollToPosition(0); 
        }
    });
}

使用以下视图:

<android.support.design.widget.FloatingActionButton
    app:fabSize="mini"
    android:id="@+id/upFAB"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:src="@mipmap/up_icon"
    android:layout_gravity="bottom|center"
    android:layout_marginBottom="60dp" />

看起来像this

正如您所看到的那样,按钮一直显示,当用户在RecyclerView中滚动一定数量时,我怎么才能显示它?

2 个答案:

答案 0 :(得分:4)

尝试这种方式并告诉我,我没有尝试过它

 mRecyclerView.setOnScrollListener(new RecyclerView.OnScrollListener() {

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

            if (firstVisibleItem > 1) {
                //Show FAB
            }
            else{
               //Hide FAB
            }
        }
    });

答案 1 :(得分:0)

我刚刚通过ListView完成了这项工作。

以下是使用ListView代替RecycleView的示例。

试试这个,希望它会有所帮助。

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(firstVisibleItem > 2)
            {
                upFAB.setVisibility(View.VISIBLE);
            }
            else
            {
                upFAB.setVisibility(View.GONE);
            }
        }
    });