Comments (10)
@tsunamilx 我也遇到这问题,临时找到个解决办法,你可以试试
@Aspsine 作者有没有计划解决这个问题 🙏🙏🙏🙏🙏
public class MainHomeFragment extends BaseFragment implements AppBarLayout.OnOffsetChangedListener{
@Bind(R.id.app_bar_layout)
AppBarLayout app_bar_layout;
@Bind(R.id.swipeToLoadView)
SwipeToLoadView swipeToLoadView;
private void initDisplay() {
app_bar_layout.addOnOffsetChangedListener(this);
}
@Override
public void onOffsetChanged(AppBarLayout appBarLayout, int i) {
// i == 0 就代表AppBarLayout展开了
if (!swipeToLoadView.isRefreshing())
swipeToLoadView.setRefreshEnabled(i==0);
}
}
from swipetoloadlayout.
让子Fragment实现接口SwipeChildListener
public interface SwipeChildListener {
/**
* 启用下拉刷新功能
*
* @see SwipeLayout#enableRefresh()
*/
void enableRefresh();
/**
* 禁用下拉刷新功能
*
* @see SwipeLayout#disableRefresh()
*/
void disableRefresh();
}
然后在添加AppBarLayout滚动的监听事件
// 监听头部滚动状态
mAppBarLayout.addOnOffsetChangedListener(this);
@Override
public void onOffsetChanged(AppBarLayout appBarLayout, int verticalOffset) {
float alpha = (appBarLayout.getTotalScrollRange() + verticalOffset) * 1.0f / appBarLayout.getTotalScrollRange();
// 全面展开状态,在一定范围内
boolean fullExpanded = verticalOffset > -10;
Fragment fragment = mAdapter.mFragmentList.get(mPager.getCurrentItem());
if (fragment != null && fragment instanceof SwipeChildListener) {
SwipeChildListener listener = (SwipeChildListener) fragment;
// 只有在全面展开状态时才允许子页面开启刷新功能以防止手势冲突
if (fullExpanded) {
listener.enableRefresh();
} else {
listener.disableRefresh();
}
}
}
子Fragment实现接口方法:
@Override
public void enableRefresh() {
mSwipeLayout.setRefreshEnabled(true);;
}
@Override
public void disableRefresh() {
mSwipeLayout.setRefreshEnabled(false);
}
from swipetoloadlayout.
意思是,当AppbarLayout处于缩起状态时,下拉先让其展开,完全展开后再触发刷新吧?
from swipetoloadlayout.
对是的
from swipetoloadlayout.
from swipetoloadlayout.
请问有什么进展吗
from swipetoloadlayout.
@tsunamilx 抱歉,最近比较忙,你可以先尝试自己修复一下。
from swipetoloadlayout.
还是你们厉害,我是直接修改了SwipeToLoadLayout
,把Toolbar
塞进了SwipeToLoadLayout
里面,然后在onCheckCanRefresh()
方法里判断了Toolbar
的可见高度来判定是否开始刷新。
from swipetoloadlayout.
@act262 还需要再接口中补充一个isRefreshing的方法,否则在刷新状态时,往上轻轻一推,refresh header会收不回去
public interface SwipeChildListener {
boolean isRefreshing();
void enableRefresh();
void disableRefresh();
}
mAppBarLayout.addOnOffsetChangedListener(new AppBarLayout.OnOffsetChangedListener() {
@Override
public void onOffsetChanged(AppBarLayout appBarLayout, int verticalOffset) {
float alpha = (appBarLayout.getTotalScrollRange() + verticalOffset) * 1.0f / appBarLayout.getTotalScrollRange();
if(!swipeChildListener.isRefreshing()){
// 全面展开状态,在一定范围内
boolean fullExpanded = verticalOffset > -10;
// 只有在全面展开状态时才允许子页面开启刷新功能以防止手势冲突
if (fullExpanded) {
swipeChildListener.enableRefresh();
} else {
swipeChildListener.disableRefresh();
}
}
}
});
from swipetoloadlayout.
是的,还有加载footer的2个方法也需要放到接口处理一下,可以处理子页面内容在没有充满父布局导致的问题
from swipetoloadlayout.
Related Issues (20)
- ListView emptyView,求指教 怎么处理。 HOT 1
- maven库拉不下来,能不能换到jcenter库
- 请问如何配置下拉阻力系数?下拉时越往下移动距离越小 HOT 1
- 事件拦截!!!急 HOT 3
- 瀑布流的上拉刷新,如何处理才能不显示不对齐的空白
- 正在刷新的状态下,reclycleview居然可以上滑 HOT 1
- 当嵌套ListView发现滑动冲突问题 HOT 1
- 上拉或下拉 刷新时 SwipeTrigger void onMove(int y, boolean isComplete, boolean automatic);
- onMove(int y, boolean isComplete, boolean automatic);建议还是改为 float 类型 做一些效果时 距离精度丢失了
- 下拉刷新刷新完成有时候头布局一直在转
- 崩!
- 有个问题
- 作者这个库不维护了吗
- 子控件大小设置为自适应,SwipeToLoadLayout,子控件内容发生变化,但控件大小无法改变 HOT 1
- 最新版的isRefreshing()接口在下拉刷新后一直显示为true,不能用于判断刷新状态。
- CoordinatorLayout嵌套SwipeToLoadLayout出现滑动冲突 HOT 3
- 在fragment生命周期onActivityCreated中发生null pointer exception
- swipe_target should chagne to android:tag
- CoordinatorLayout
- 当recyclerview添加了footerview之后又隐藏的话不能上拉加载更多
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from swipetoloadlayout.