改变listview中item选中时文字的颜色
摘要 当listview的某个item选中时,默认有个选中的高亮显示,如果你要自定义选中时的高亮显示效果,可以在listview中设置属性 android:listSelector="@drawable/item_selector" 其中 item_selector 是在drawable目录下定义的一个xml文件,这种用于突出不同状态下
当listview的某个item选中时,默认有个选中的高亮显示,如果你要自定义选中时的高亮显示效果,可以在listview中设置属性
1
|
android:listSelector= "@drawable/item_selector" |
其中item_selector
是在drawable目录下定义的一个xml文件,这种用于突出不同状态下显示效果的xml文件我们称之为selector:
1
2
3
4
5
6
7
|
<?xml version= "1.0" encoding= "utf-8" ?> <selector <item android:state_pressed= "false" android:drawable= "@*android:color/transparent" /> <item android:state_pressed= "true" android:drawable= "@drawable/grid_item_select_bg" /> <item android:state_selected= "true" android:drawable= "@drawable/grid_item_select_bg_night" /> </selector> |
上面这个selector定义了三种状态下的显示效果。
但是如果我们想在listview的某个item选中时改变该item的某个textview的文字颜色,上面的办法就行不通了。那该如何做呢?
其实如果我们真正了解android:listSelector的含义的话,很容易实现上面的需求。
我发现如果不在listview中设置listSelector,也就是将android:listSelector="@drawable/item_selector"去掉,而把item 的background属性设为item_selector,会得到同样的选中高亮效果。由此可见listview可以将自己的状态(state_press、state_select、state_focus等)向内传递,当然item本身也可以将这些状态继续传递给子view。
受此启发,我们可以将需要高亮显示文字颜色的TextView的textColor属性也设置成selector的形式(没想到吧textColor也可以用drawable定义)。
假设item的xml原本定义为
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
<?xml version= "1.0" encoding= "utf-8" ?> <LinearLayout xmlns:android= "http://schemas.android.com/apk/res/android" android:layout_width= "fill_parent" android:layout_height= "fill_parent" android:orientation= "vertical" > <TextView android:id= "@+id/txt" android:layout_width= "fill_parent" android:layout_height= "wrap_content" android:text= "@string/hello" android:layout_margin= "5dp" /> </LinearLayout> |
那么可以按照上面的办法将item的xml改写为:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
<?xml version= "1.0" encoding= "utf-8" ?> <LinearLayout xmlns:android= "http://schemas.android.com/apk/res/android" android:layout_width= "fill_parent" android:layout_height= "fill_parent" android:orientation= "vertical" android:background= "@drawable/item_selector" <!-- item背景色变换 --> > <TextView android:id= "@+id/txt" android:layout_width= "fill_parent" android:layout_height= "wrap_content" android:text= "@string/hello" android:layout_margin= "5dp" android:textColor= "@drawable/item_text_selector" <!-- item文字颜色变换 --> /> </LinearLayout> |
其中,item_text_selector
.xml的源码如下:
1
2
3
4
5
6
7
|
<?xml version= "1.0" encoding= "utf-8" ?> <item android:state_focused= "true" android:color= "#333333" /> <!-- focused --> <item android:state_pressed= "true" android:color= "#333333" /> <!-- pressed --> <item android:state_selected= "true" android:color= "#333333" /> <!-- pressed --> <item android:color= "#f4f4f4" /> <!-- default --> </selector> |
经过本人实际测试该方法可行,如果想更加可靠不妨给TextView 增加个属性
1
|
android:duplicateParentState= "true" |
表示会跟随ParentView的状态来变化,其实没加也不会有问题,因为默认状态本来就是能传递的,只是在某些极端的情况下可以设置这个属性做一层保险。
改变listview中item选中时文字的颜色的更多相关文章
- 转 Android RadioButton设置选中时文字和背景颜色同时改变
主要应用在购物车,像淘宝的那样,点击以后弹出一个选择种类颜色这样的popuwindow以后,然后这个选择种类的地方要用到类似这个玩意儿. 搜了一下,效果和这个文章一致.转了. 原文地址:http:// ...
- Android RadioButton设置选中时文字和背景颜色同时改变
主要应用在购物车,像淘宝的那样,点击以后弹出一个选择种类颜色这样的popuwindow以后,然后这个选择种类的地方要用到类似这个玩意儿. 搜了一下,效果和这个文章一致.转了. 原文地址:http:// ...
- Android ListView中Item点击事件失效解决方案
欢迎关注公众号,每天推送Android技术文章,二维码如下:(可扫描) 在平常的开发过程中,我们的ListView可能不只是简单的显示下文本或者按钮,更多的是显示复杂的布局,这样的话,我们就得自己写布 ...
- android listview中item通过viewpager实现《IT蓝豹》
android listview中item通过viewpager实现 android listview中item通过viewpager实现,每一个item都支持viewpager实现图片切换功能.本项 ...
- 1016-06-首页20-封装工具条---UITableView控件距离顶部的间距问题----cell选中时的背景颜色设置
一.设置UITableView里面的顶部 cell 距离顶部的间距的三种方式: 方法 1. 直接设置: self.tableView.contentInset = UIEdgeInsetsMake(H ...
- Android 实现ListView中Item被单击后背景色保持高亮
今天为了解决一个需求,就是我有一个slidingDrawer,里面是一个ListView.然后,单击其中的Item,默认只是显示一个橙色背景后就恢复了.客户便有着个需求,需要单击这个Item的背景高亮 ...
- listview中item 有checkbox多选防止滑动 listview页面 出现checkbox错位问题
checkbox点击切换背景 <CheckBox android:id="@+id/checkbox" android:layout_width="40dp&quo ...
- Android购物车的实现,仿淘宝天猫京东等APP。处理RecyclerView或listview中的选中事件;
很久之前的代码了,拉出来晾晾! 购物车大致思路: 分为:商品.店铺.全选: 商品全部选中后--店铺自动选中:商品未全部选中(若有一个商品未选中)--店铺不选中. 店铺全部选中后--全选自动选中:店铺未 ...
- 自定义类似于listView中Item背景
方法一. drawable/listitem_bk.xml <?xml version="1.0" encoding="utf-8" ?> < ...
随机推荐
- Fiddler抓包7-post请求(json)【转载】
本篇转自博客:上海-悠悠 原文地址:http://www.cnblogs.com/yoyoketang/tag/fiddler/ 前言上一篇讲过get请求的参数都在url里,post的请求相对于get ...
- validate插件实现表单效验(一)
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- hdu 5480(维护前缀和+思路题)
Conturbatio Time Limit: 6000/3000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total ...
- 同步mysql数据到ElasticSearch的最佳实践
Elasticsearch是一个实时的分布式搜索和分析引擎.它可以帮助你用前所未有的速度去处理大规模数据.ElasticSearch是一个基于Lucene的搜索服务器.它提供了一个分布式多用户能力的全 ...
- [thinkphp]查看thinkphp系统定义的常量值
echo 'MEMORY_LIMIT_ON: ' . MEMORY_LIMIT_ON . '<br>'; echo 'THINK_PATH: ' . THINK_PATH . '<b ...
- HihoCoder 1629 Graph (2017 ACM-ICPC 北京区域赛 C题,回滚莫队 + 启发式合并 + 可撤销并查集)
题目链接 2017 ACM-ICPC Beijing Regional Contest Problem C 题意 给定一个$n$个点$m$条边的无向图.现在有$q$个询问,每次询问格式为$[l, ...
- Python的网络编程[3] -> BOOTP 协议[0] -> BOOTP 的基本理论
BOOTP协议 / BOOTP Protocol 目录 基本理论 BOOTP 与 DHCP 通信流程 数据报文格式 报文加解码实现 1. 基本理论 / Basic Theory BOOTP(Boots ...
- 山东多校联合模拟赛 Day1
矩形计数(rect) Description 给出圆周上的 \(N\) 个点,请你计算出以这些点中的任意四个为四个角,能构成多少个矩 形. 点的坐标是这样描述的,给定一个数组 \(v[1..N]\), ...
- [POI2012]Festival
题目大意: 有$n$个正整数$x_1,x_2,\ldots,x_n$,再给出一些限制条件,限制条件分为两类: 1.给出$A,B$,要求满足$X_A+1=X_B$: 2.给出$C,D$,要求满足$X_C ...
- Jekyll搭建个人博客-拓展版
关于Jekyll Jekyll 是一个简单的博客形态的静态站点生产机器.它有一个模版目录,其中包含原始文本格式的文档,通过 Markdown (或者 Textile) 以及 Liquid 转化成一个完 ...