Android 在SwipeRefreshLayout内部使用RecyclerView时,底部的过卷效果不会出现
我正试图用漂亮的pull to refresh功能制作一个列表,但是当我在SwipeRefreshLayout中有一个RecyclerView时,overscroll效果只有在刷新时才起作用。即使是在名单的末尾。发生的情况是,用户没有列表结束的视觉提示 以下是我的XML:Android 在SwipeRefreshLayout内部使用RecyclerView时,底部的过卷效果不会出现,android,android-recyclerview,swiperefreshlayout,android-overscoll,Android,Android Recyclerview,Swiperefreshlayout,Android Overscoll,我正试图用漂亮的pull to refresh功能制作一个列表,但是当我在SwipeRefreshLayout中有一个RecyclerView时,overscroll效果只有在刷新时才起作用。即使是在名单的末尾。发生的情况是,用户没有列表结束的视觉提示 以下是我的XML: <android.support.v4.widget.SwipeRefreshLayout android:id="@+id/swipe_refresh" android:layout_width="ma
<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>
当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();
}
}
});
你所说的“过卷”是什么意思。请您解释一下,或者提供一张图片来回答您试图实现的目标的问题好吗?@Pranav,
pullToRefresh
请参考ya???@ken pullToRefresh是SwipeRefreshLayout的目标。
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();
}
}
});