一个小问题引发的"Listview里有多个Edittext,点击一个全部都高亮"

        最近在做一个Listview里嵌套多个Edittext的页面,刚开始还没什么问题.界面如下:


        然后还按照需求,上传的时候判断如果输入框为空的话,就改变输入框的背景颜色来提示.这时候就发现这个EditText出现点其中一个,当前画面中所有Edittext都会高亮了.就算怎么修改他们clearFocus也不行.让我非常抓狂,上网到处都查不到相关资料.找了两天,也自己写了个小demo,正常的listview里面有多个Edittext都是正常的.我就把怀疑方向,放到我的业务需求代码那了.

        把所有业务代码屏蔽之后,就正常了.然后一步一步恢复,终于找到问题代码在于设置背景那里! 由于需要判断输入框为空之后,显示别的颜色,又要在有内容后,输入框背景恢复正常.但是设置其他颜色好办,如何恢复默认的背景是个问题,无论是设置透明颜色还是白色,都不是原来默认的.结果我就自作聪明的,在getView()那里保存了默认的background,是一个drawable.之后要恢复默认背景,就把这个drawable设回去.问题就在这个drawable那.后来分析这个drawable应该是xml,本身就设定好了focus和非focus的时候背景.所以点击了edittext之后,由于重用的关系,其他edittext还是把背景变成高亮,但clearFocus没能让这个背景改变.这点通过onTouch和focusChangeListener的log证实了我的想法.

        所以最后的解决方法,我就是找了SDK里面的edittext的背景png和高亮png,自己通过代码来控制他的背景.这样这个"高亮"的bug就解决了. 这里记录一下,方便自己以后碰到类似的问题,也好解决.

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值