我有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
中滚动一定数量时,我怎么才能显示它?
答案 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);
}
}
});