Open
Description
详细描述
动态设置不同刷新头部时,
1.先设置MaterialHeader刷新头部后,执行下拉刷新,此时下拉效果为SpinnerStyle.FixedFront。
2.代码中设置为其他的刷新头部(如:ClassicsHeader,下拉效果为SpinnerStyle.Translate),执行下拉刷新,此时下拉效果仍然为SpinnerStyle.FixedFront。
3.那么后续所有新设置的头部的下拉刷新效果均为SpinnerStyle.FixedFront
期望:下拉效果为当前设置的刷新头部的SpinnerStyle效果
使用版本
implementation 'com.scwang.smartrefresh:SmartRefreshLayout:1.1.0'
implementation 'com.scwang.smartrefresh:SmartRefreshHeader:1.1.0'
使用代码
使用github代码示例RefreshStylesFragment的刷新代码发现的!分支为release 1.1.0版本的代码。
RefreshStylesFragment中的代码仅仅改变了设置的刷新头部添加了MaterialHeader。
RefreshLayout refreshLayout = root.findViewById(R.id.refreshLayout);
if (refreshLayout != null) {
refreshLayout.setOnMultiPurposeListener(new SimpleMultiPurposeListener() {
@Override
public void onRefresh(@NonNull final RefreshLayout refreshLayout) {
refreshLayout.finishRefresh(3000);
}
@Override
public void onLoadMore(@NonNull final RefreshLayout refreshLayout) {
refreshLayout.finishLoadMore(2000);
}
@Override
public void onStateChanged(@NonNull RefreshLayout refreshLayout, @NonNull RefreshState oldState, @NonNull RefreshState newState) {
if (newState == RefreshState.None) {
if (oldState == RefreshState.LoadFinish) {
RefreshFooter refreshFooter = refreshLayout.getRefreshFooter();
if (refreshFooter instanceof RefreshFooterWrapper) {
View footerView = refreshFooter.getView();
if (footerView instanceof TaurusHeader) {
refreshLayout.setRefreshFooter(new RefreshFooterWrapper(new DropBoxHeader(getContext())));
} else if (footerView instanceof DropBoxHeader) {
refreshLayout.setRefreshFooter(new RefreshFooterWrapper(new DeliveryHeader(getContext())));
} else if (footerView instanceof DeliveryHeader) {
refreshLayout.setRefreshFooter(new RefreshFooterWrapper(new BezierCircleHeader(getContext())));
} else {
refreshLayout.setRefreshFooter(new BallPulseFooter(getContext()));
}
}
} else if (oldState == RefreshState.RefreshFinish) {
RefreshHeader refreshHeader = refreshLayout.getRefreshHeader();
if (refreshHeader instanceof RefreshHeaderWrapper) {
//此处注释掉多余刷新头部
/* refreshLayout.setRefreshHeader(new PhoenixHeader(getContext()));
} else if (refreshHeader instanceof PhoenixHeader) {
refreshLayout.setRefreshHeader(new DropBoxHeader(getContext()));
} else if (refreshHeader instanceof DropBoxHeader) {
refreshLayout.setRefreshHeader(new FunGameHitBlockHeader(getContext()));
} else if (refreshHeader instanceof FunGameHitBlockHeader) {*/
refreshLayout.setRefreshHeader(new ClassicsHeader(getContext()));
} else {
refreshLayout.setRefreshHeader(new RefreshHeaderWrapper(new MaterialHeader(getContext())));
}
}
}
}
});
}
问题重现
问题重现操作不走:
- 进入style tab页
2.修改为上述代码:添加MaterialHeader刷新头部
3.下拉刷新3次后可发现问题:
4.发现问题:新设置的刷新头部SpinnerStyle.Translate下拉执行效果被改变成MaterialHeader的SpinnerStyle.FixedFront效果
预期行为
按照新设置的刷新效果的SpinnerStyle样式效果执行
设备信息
请填写一下你运行设备的信息,信息越全越有助于我理解问题
- 设备名:华为P20 Pro,官方模拟器
- Android版本: Android 9.0
- 系统版本EMUI9.1.0
Activity