java - ListView如何同时修改选中item的背景色和item中ImageView的背景图片,TextView的字体颜色
天蓬老师
天蓬老师 2017-04-18 10:40:38
[Java讨论组]
天蓬老师
天蓬老师

欢迎选择我的课程,让我们一起见证您的进步~~

全部回复(5)
天蓬老师

说一下自己的解决方案:其实整体item,ImageView和TextView均是通过设置selector实现的。分别是android:background,android:src,android:textColor.
需要注意两点:

  1. android:textColor里设置selector,里面需要实现的是android:color,而不是android:drawable.

  2. ListView默认是整体item获取焦点,如果子控件没有跟随,需要使用android:duplicateParentState="true"让其获取焦点。

大家讲道理

ImageView与TextView都加上这个属性:

android:duplicateParentState="true"
怪我咯

如果是我就在getView这里写逻辑(维护一个列表什么的),收到选中事件的时候修改列表然后调用notifyDataSetChanged,因为listView本身有缓存item的设计,修改单个itemView会引起很多问题。

天蓬老师

提供一个新的思路供你参考,利用事件分发的方法dispatchTouchEvent()或者onTouchEvent()来处理,在你描述的问题中,当用户点击Item时,其对应的父布局、ImageView、TextView均可拿到分发的事件,但在事件方法中不要做拦截,这样不同控件的背景和色值想怎么变随心所欲了。

PHPz

iamgeView和textView总有父布局吧?那么你就设置这个父布局的点击监听,监听到了,不就可以修改图片或者文字了?

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号