progressActivity包裹swpielayout出现包裹内容无法隐藏问题

本来想利用progressActivity包裹swipelayout的布局中,swipelayout下拉刷新旧数据的时候,progressActivity.showLoading来隐藏swipelayout的内容布局,但是不如人意,swipe的进度在转,并没有隐藏如下图





下拉刷新的执行代码如下


if (mSwipeRefreshLayout != null) {
    mActivity.runOnUiThread(new Runnable() {
        @Override
        public void run() {
            if(!mSwipeRefreshLayout.isRefreshing())
                mSwipeRefreshLayout.setRefreshing(true);
        }
    });
}
mProgressListener.showLoading();



于是查看prgressActivity源码的showloading方法会调到这个方法里面
private void switchState(State state, Drawable drawable, String errorText, String errorTextContent,
                         String errorButtonText, View.OnClickListener onClickListener, List<Integer> skipIds) {
    this.state = state;


    switch (state) {
        case CONTENT:
            //Hide all state views to display content
            hideLoadingView();
            hideEmptyView();
            hideErrorView();


            setContentVisibility(true, skipIds);
            break;
        case LOADING:
            hideEmptyView();//隐藏空布局
            hideErrorView();//隐藏错误布局


            setLoadingView();//添加loading的布局在最上层
            setContentVisibility(false, skipIds);//这个方法来隐藏progressActivity包裹的内容


            break;
      ...//省略代码
    }
}


setContentVisibility的方法来隐藏包裹的布局


private void setContentVisibility(boolean visible, List<Integer> skipIds) {
    for (View v : contentViews) {
        if (!skipIds.contains(v.getId())) {
            v.setVisibility(visible ? View.VISIBLE : View.GONE);
        }
    }
}

通过上面代码查看应该没撒问题呀,理论上是会隐藏progressActivity包裹的的view的呀,于是查阅资料发现在viewGroup的子布局已经有动画在run的情况下有可能
setVisibility是无效的,这个问题还比较棘手暂时还有较好的方案解决,特此记录一下,有时间可以研究View的源码了为什么有动画时会无效,


   
   



     
     




     
     


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值