Skip to content

动态设置不同刷新头部时,MaterialHeader刷新头部的SpinnerStyle会覆盖后续设置刷新头部的SpinnerStyle #1075

Open
@JunhuaLin

Description

@JunhuaLin

详细描述
动态设置不同刷新头部时,
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())));
                            }
                        }
                    }
                }
            });
        }

问题重现
问题重现操作不走:

  1. 进入style tab页
    2.修改为上述代码:添加MaterialHeader刷新头部
    3.下拉刷新3次后可发现问题:
    4.发现问题:新设置的刷新头部SpinnerStyle.Translate下拉执行效果被改变成MaterialHeader的SpinnerStyle.FixedFront效果

预期行为
按照新设置的刷新效果的SpinnerStyle样式效果执行

设备信息
请填写一下你运行设备的信息,信息越全越有助于我理解问题

  • 设备名:华为P20 Pro,官方模拟器
  • Android版本: Android 9.0
  • 系统版本EMUI9.1.0

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions