Skip to content

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

Open
@JunhuaLin

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())));
                            }
                        }
                    }
                }
            });
        }

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

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

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

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

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

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions