android_如何巧妙在Listview滑动时将头部固定

ListView增加头部,并且该头部在随着ListView滑动时需要固定,下拉刷新采用的是android5的SwipeRefresh。
实现方案:
在顶部增加一个跟ListView头部一模一样
在ListView的onScroll中,判断firstVisibleItem>=0时,就将固定在顶部的布局mLayoutMsgOperate显示出来
(mLayoutMsgOperate显示的时机是firstVisibleItem>=0)
@Override
public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
    if (firstVisibleItem >= 0) {
        mLayoutMsgOperate.setVisibility(View.VISIBLE);//显示顶部固定部分
    } else {
        mLayoutMsgOperate.setVisibility(View.GONE);//隐藏顶部固定部分
    }
}
但是这样操作会导致一个问题,那就是SwipeRefreshLayout在做下拉刷新时,下拉圈就会被固定部分挡住,如下图所示:

问题出现的原因就在onScroll方法的判断中,因为firstVisibleItem>=0,当可见时,并且还没有上拉,默认情况下就是firstVisibleItem>=0条件成立的,所以一开始顶部固定部分就显示,所以在下拉刷新时,下拉控件就会固定部分挡住。
解决这个问题,可以给ListView再添加一个头部,也就是随便创建一个View对象给ListView,然后addHeader即可!代码如下:

在onScroll方法中的if判断条件作一下调整,因为添加了一个view作为头部,那么默认情况第一个可见的视图就是我们刚刚添加的view,所以固定部分视图可见的条件就变为firstVisibleItem>0了。
(mLayoutMsgOperate显示的时机是firstVisibleItem>0)

运行效果图:有什么不对,请评论指正!谢谢


  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值