android listView 点击Item的时候,改变文字颜色和背景色

本文详细介绍了如何自定义Android中的ListView与TextView样式,并实现背景色、文字颜色随状态变化的效果。通过创建XML布局文件和使用Selector进行颜色变换,展示了如何利用自定义控件增强应用的用户体验。此外,还介绍了TextView的属性设置以使其跟随ParentView状态变化,提供了从布局设计到实际应用的完整解决方案。

代码

list.xml

[java] view plain copy
  1. <?xmlversion="1.0"encoding="utf-8"?>
  2. <LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"
  3. android:layout_width="fill_parent"
  4. android:layout_height="fill_parent"
  5. android:orientation="vertical"
  6. >
  7. <ListView
  8. android:id="@+id/list"
  9. android:layout_width="fill_parent"
  10. android:layout_height="wrap_content"
  11. />
  12. </LinearLayout>

list_item.xml

[java] view plain copy
  1. <?xmlversion="1.0"encoding="utf-8"?>
  2. <LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"
  3. android:layout_width="fill_parent"
  4. android:layout_height="fill_parent"
  5. android:orientation="vertical"
  6. android:background="@drawable/item_type"<!--item背景色变换-->
  7. >
  8. <TextView
  9. android:id="@+id/txt"
  10. android:layout_width="fill_parent"
  11. android:layout_height="wrap_content"
  12. android:text="@string/hello"
  13. android:layout_margin="5dp"
  14. android:textColor="@drawable/item_selector"<!--item文字颜色变换-->
  15. />
  16. </LinearLayout>

再写一个selector用来做颜色变换

[java] view plain copy
  1. <?xmlversion="1.0"encoding="utf-8"?>
  2. <selectorxmlns:android="http://schemas.android.com/apk/res/android">
  3. <itemandroid:state_focused="true"android:color="@color/text_type02"/><!--focused-->
  4. <itemandroid:state_pressed="true"android:color="@color/text_type02"/><!--pressed-->
  5. <itemandroid:state_selected="true"android:color="@color/text_type02"/><!--pressed-->
  6. <itemandroid:color="@color/text_type01"/><!--default-->
  7. </selector>

然后到activity中

[java] view plain copy
  1. list=(ListView)findViewById(R.id.list);
  2. data=newArrayList<HashMap<String,Object>>();
  3. for(inti=0;i<5;i++){
  4. map=newHashMap<String,Object>();
  5. map.put("data","Test"+i);
  6. data.add(map);
  7. }
  8. SimpleAdaptersimple=newSimpleAdapter(this,data,R.layout.list_item,newString[]{"data"},newint[]{R.id.txt});
  9. list.setAdapter(simple);

TextView 还要增加个属性

android:duplicateParentState="true"

这样才会跟随ParentView的状态来变化

这样就可以实现效果了。

不使用系统的,尽量自定义

使用系统的试过几个不知道哪里不对,一直没生效,这样写就可以了。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值