Android中扩展ListView遇到的问题

项目需要设计一个类似于QQ展开后的列表样式。


考虑了一下后,写了一个Adapter来定义ListView中的数据。在Adapter中将title也作为listitem的一项存放在list中,getview的时候判断该view是title则生成一个textview返回,否则套用ListItem的格式返回一个layout。


一切很顺利,但是悲剧马上来了。UI的设计为当继续向上滑动的时候title需要一直漂浮在顶端知道下一个title触顶。


起初认为如果是一个RelativeLayout中嵌套一个ListView和一个TextView应该很好实现。后来想将其做到一起,直接重写一个ListView在OnDraw里面画出这个title。


个人认为思路没啥问题,开始代码。先写了个实验的代码,在扩展的listview的ondraw中直接写了个text。跑了一下,没出来。


然后就开始了暗无天日的一下午的调试。后来想起头说的,遇到bug休息一下,回来再看。休息5分钟后,回头分析了一下,忽然想到ListView他nnd应该是个ViewGroup。


坑爹啊,被前面的子View给覆盖了。错误够低级。


修改了子view的透明度,果然看到了那几个该死的字。然后按照UI 设计重新画漂浮的title。


问题又来了,根本上来说ListView还是先执行本身的OnDraw然后才会执行子View的onDraw。


然后想到的就是将子View都设透明度,估计问题就可以解决了。但是效果估计和UI设计有些出入。


实在不行就还是用RelativeLayout解决问题。


总结一下。

多级的ListView样式可以通过定制Adapter来模拟实现,还有一些细节,比如屏蔽点击等。

另外定制自己的Listview需要考虑到onDraw的描绘顺序。

另外一个小细节是,cacheHintColor可以设置为背景色一致的,否则默认当滑动listView的时候背景是黑色的,影响UI。




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值