[英]Overscroll effect doesn't appear in my recyclerview inside swiperefreshlayout
[英]Overscroll effect from bottom not appearing when using RecyclerView inside SwipeRefreshLayout
我正在嘗試使用很好的拉動刷新功能制作一個列表,但是當我在SwipeRefreshLayout中有一個RecyclerView時,過滾動效果僅在刷新時才有效。 即使是列表的底部。 會發生什么是用戶沒有列表已結束的視覺提示。
這是我的XML:
<android.support.v4.widget.SwipeRefreshLayout
android:id="@+id/swipe_refresh"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<android.support.v7.widget.RecyclerView
android:id="@+id/recycler_vew"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
</android.support.v4.widget.SwipeRefreshLayout>
片段中的類:
public class MyListFragment extends Fragment implements SwipeRefreshLayout.OnRefreshListener {
private SwipeRefreshLayout swipeRefreshLayout;
private RecyclerView recyclerView;
static final String[] lines = new String[]{
"this is line #1",
"this is line #2"
"this is line #3"
"this is line #4"
"this is line #5"
"this is line #6"
"this is line #7"
};
@Override
public void onRefresh() {
Log.i("QUESTION_LIST_REFRESH", "onRefresh called from SwipeRefreshLayout");
new Handler().postDelayed(new Runnable() {
@Override public void run() {
swipeRefreshLayout.setRefreshing(false);
}
}, 4000);
}
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setHasOptionsMenu(true);
}
@Override
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
recyclerView = (RecyclerView) view.findViewById(R.id.questions_list);
swipeRefreshLayout = (SwipeRefreshLayout) view.findViewById(R.id.swipe_refresh_question_list);
swipeRefreshLayout.setOnRefreshListener(this);
swipeRefreshLayout.setColorSchemeColors(
ContextCompat.getColor(getContext(),R.color.colorPrimaryDark),
ContextCompat.getColor(getContext(),R.color.colorAccent));
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_list, container, false);
recyclerView = (RecyclerView) view.findViewById(R.id.recycler_vew);
recyclerView.setHasFixedSize(true);
RecyclerView.LayoutManager layoutManager = new LinearLayoutManager(getContext());
recyclerView.setLayoutManager(layoutManager);
recyclerView.setAdapter(new MyListAdapter(lines));
return view;
}
}
您可以在recyclerview達到其最高位置時啟用刷新。 這會解決你的問題嗎?
rv.addOnScrollListener(new RecyclerView.OnScrollListener() {
@Override
public void onScrollStateChanged(RecyclerView recyclerView, int newState) {
super.onScrollStateChanged(recyclerView, newState);
try {
LinearLayoutManager layoutManager = ((LinearLayoutManager) rv.getLayoutManager());
int firstVisiblePosition = layoutManager.findFirstVisibleItemPosition();
Log.e("refresh", "State - " + newState + " : firstVisiblePosition" + firstVisiblePosition);
if (firstVisiblePosition == 0)
pullToRefresh.setEnabled(true);
else
pullToRefresh.setEnabled(false);
} catch (Exception e) {
e.printStackTrace();
}
}
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.