扫码关注官方订阅号
欢迎选择我的课程,让我们一起见证您的进步~~
说一下自己的解决方案:其实整体item,ImageView和TextView均是通过设置selector实现的。分别是android:background,android:src,android:textColor.需要注意两点:
android:textColor里设置selector,里面需要实现的是android:color,而不是android:drawable.
ListView默认是整体item获取焦点,如果子控件没有跟随,需要使用android:duplicateParentState="true"让其获取焦点。
ImageView与TextView都加上这个属性:
android:duplicateParentState="true"
如果是我就在getView这里写逻辑(维护一个列表什么的),收到选中事件的时候修改列表然后调用notifyDataSetChanged,因为listView本身有缓存item的设计,修改单个itemView会引起很多问题。
提供一个新的思路供你参考,利用事件分发的方法dispatchTouchEvent()或者onTouchEvent()来处理,在你描述的问题中,当用户点击Item时,其对应的父布局、ImageView、TextView均可拿到分发的事件,但在事件方法中不要做拦截,这样不同控件的背景和色值想怎么变随心所欲了。
iamgeView和textView总有父布局吧?那么你就设置这个父布局的点击监听,监听到了,不就可以修改图片或者文字了?
微信扫码关注PHP中文网服务号
QQ扫码加入技术交流群
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
PHP学习
技术支持
返回顶部
说一下自己的解决方案:其实整体item,ImageView和TextView均是通过设置selector实现的。分别是android:background,android:src,android:textColor.
需要注意两点:
android:textColor里设置selector,里面需要实现的是android:color,而不是android:drawable.
ListView默认是整体item获取焦点,如果子控件没有跟随,需要使用android:duplicateParentState="true"让其获取焦点。
ImageView与TextView都加上这个属性:
如果是我就在getView这里写逻辑(维护一个列表什么的),收到选中事件的时候修改列表然后调用notifyDataSetChanged,因为listView本身有缓存item的设计,修改单个itemView会引起很多问题。
提供一个新的思路供你参考,利用事件分发的方法dispatchTouchEvent()或者onTouchEvent()来处理,在你描述的问题中,当用户点击Item时,其对应的父布局、ImageView、TextView均可拿到分发的事件,但在事件方法中不要做拦截,这样不同控件的背景和色值想怎么变随心所欲了。
iamgeView和textView总有父布局吧?那么你就设置这个父布局的点击监听,监听到了,不就可以修改图片或者文字了?