ListView中没有默认的选择颜色,只有选择Item后的焦点颜色,鼠标点击时Item有颜色,放开鼠标后颜色也就没有了,要实现放开鼠标后选择项的背景还是有颜色的。

1、配置main.xml

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3. android:orientation="vertical" android:layout_width="fill_parent"
  4. android:layout_height="fill_parent">
  5. <ListView android:id="@+id/listView" android:listSelector="#000000"
  6. android:layout_width="fill_parent"
  7. android:layout_height="wrap_content" />
  8. </LinearLayout>

设置Item的获取焦点颜色为白色android:listSelector="#000000"(即不显示背景颜色)

2、配置用于ListView显示Item的button_layout.xml

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <LinearLayout
  3. xmlns:android="http://schemas.android.com/apk/res/android"
  4. android:id="@+id/LinearLayoutButton"
  5. android:layout_width="144px"
  6. android:layout_height="99px"
  7. android:gravity="center"
  8. android:orientation="vertical">
  9. <TextView
  10. android:id="@+id/TextViewButton"
  11. android:layout_width="fill_parent"
  12. android:layout_height="fill_parent"
  13. android:textSize="20px">
  14. </TextView>
  15. </LinearLayout>

3、实现Activity

  1. package com.listButtonTest.www;
  2. import java.util.ArrayList;
  3. import android.app.Activity;
  4. import android.content.Context;
  5. import android.graphics.Color;
  6. import android.os.Bundle;
  7. import android.os.Handler;
  8. import android.os.Message;
  9. import android.view.LayoutInflater;
  10. import android.view.View;
  11. import android.view.ViewGroup;
  12. import android.widget.AdapterView;
  13. import android.widget.BaseAdapter;
  14. import android.widget.LinearLayout;
  15. import android.widget.ListView;
  16. import android.widget.TextView;
  17. public class listButtonTest extends Activity {
  18. private ListView listView = null;
  19. private ListAdapter listAdapter = null;
  20. /** Called when the activity is first created. */
  21. @Override
  22. public void onCreate(Bundle savedInstanceState) {
  23. super.onCreate(savedInstanceState);
  24. setContentView(R.layout.main);
  25. listView = (ListView) this.findViewById(R.id.listView);
  26. ArrayList<ButtonView> buttonListView = new ArrayList<ButtonView>();
  27. ButtonView a = new ButtonView(R.string.l1);
  28. buttonListView.add(a);
  29. ButtonView b = new ButtonView(R.string.l2);
  30. buttonListView.add(b);
  31. ButtonView c = new ButtonView(R.string.l3);
  32. buttonListView.add(c);
  33. ButtonView d = new ButtonView(R.string.l4);
  34. buttonListView.add(d);
  35. ButtonView e = new ButtonView(R.string.l5);
  36. buttonListView.add(e);
  37. listAdapter = new ListAdapter(buttonListView);
  38. listView.setAdapter(listAdapter);
  39. listView.setDividerHeight(0);
  40. listView.setOnItemClickListener(new ListView.OnItemClickListener() {
  41. @Override
  42. public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
  43. long arg3) {
  44. // TODO Auto-generated method stub
  45. listAdapter.setSelectedPosition(arg2);
  46. listAdapter.notifyDataSetInvalidated();
  47. }
  48. });
  49. };
  50. public class ListAdapter extends BaseAdapter {
  51. ArrayList<ButtonView> arrayList = null;
  52. LayoutInflater inflater;
  53. View view;
  54. ButtonLayoutHolder buttonLayoutHolder;
  55. LinearLayout buttonLayout = null;
  56. TextView buttonText = null;
  57. private int selectedPosition = -1;// 选中的位置
  58. public ListAdapter(ArrayList<ButtonView> buttonListView) {
  59. // TODO Auto-generated constructor stub
  60. arrayList = buttonListView;
  61. }
  62. @Override
  63. public int getCount() {
  64. // TODO Auto-generated method stub
  65. return arrayList.size();
  66. }
  67. @Override
  68. public Object getItem(int position) {
  69. // TODO Auto-generated method stub
  70. return arrayList.get(position);
  71. }
  72. @Override
  73. public long getItemId(int position) {
  74. // TODO Auto-generated method stub
  75. return position;
  76. }
  77. public void setSelectedPosition(int position) {
  78. selectedPosition = position;
  79. }
  80. @Override
  81. public View getView(int position, View convertView, ViewGroup parent) {
  82. // TODO Auto-generated method stub
  83. inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
  84. view = inflater.inflate(R.layout.button_layout, null, false);
  85. buttonLayoutHolder = (ButtonLayoutHolder) view.getTag();
  86. if (buttonLayoutHolder == null) {
  87. buttonLayoutHolder = new ButtonLayoutHolder();
  88. buttonLayoutHolder.buttonLayout = (LinearLayout) view
  89. .findViewById(R.id.LinearLayoutButton);
  90. buttonLayoutHolder.textView = (TextView) view
  91. .findViewById(R.id.TextViewButton);
  92. view.setTag(buttonLayoutHolder);
  93. }
  94. buttonLayout = buttonLayoutHolder.buttonLayout;
  95. buttonText = buttonLayoutHolder.textView;
  96. if (selectedPosition == position) {
  97. buttonText.setSelected(true);
  98. buttonText.setPressed(true);
  99. buttonLayout.setBackgroundColor(Color.RED);
  100. } else {
  101. buttonText.setSelected(false);
  102. buttonText.setPressed(false);
  103. buttonLayout.setBackgroundColor(Color.TRANSPARENT);
  104. }
  105. buttonText.setTextColor(Color.WHITE);
  106. buttonText.setText(arrayList.get(position).textViewId);
  107. return view;
  108. }
  109. };
  110. }
  111. class ButtonView {
  112. int textViewId;
  113. ButtonView(int tId) {
  114. textViewId = tId;
  115. }
  116. }
  117. class ButtonLayoutHolder {
  118. LinearLayout buttonLayout;
  119. TextView textView;
  120. }

在listView的setOnItemClickListener事件中标记这次选择的Item的下标:listAdapter.setSelectedPosition(arg2);

然后调用listAdapter.notifyDataSetInvalidated()通知后台重新刷新界面。

在ListAdapter的getView()方法中,如果是选中的Item则显示背景颜色,如果不是则不显示背景颜色。

http://longyi-java.iteye.com/blog/976067

android中设置ListView的选中的Item的背景颜色的更多相关文章

  1. 【转】整理一下Android中的ListView

    原文网址:http://sunbofu.blog.51cto.com/6431507/1280441 Android中的listview目测是一个使用频率很高的组件,所以今天来总结一下listview ...

  2. Android中的ListView属性使用总结

    Android中使用ListView控件比较常见,如果能知道常用的一些属性使用,肯定会少很多坑. 1.ListView是常用的显示控件,默认背景是和系统窗口一样的透明色,如果给ListView加上背景 ...

  3. 【转】Android中设置TextView的颜色setTextColor--代码中设置字体颜色

    原文网址:http://www.cnblogs.com/myphoebe/archive/2012/01/06/2314728.html android中设置TextView的颜色有方法setText ...

  4. 【转】Android中设置TextView的颜色setTextColor

    原文网址:http://www.cnblogs.com/myphoebe/archive/2012/01/06/2314728.html android中设置TextView的颜色有方法setText ...

  5. Android中使用ListView绘制自定义表格(2)

    上回再写了<Android中使用ListView绘制自定义表格>后,很多人留言代码不全和没有数据样例.但因为项目原因,没法把源码全部贴上来.近两天,抽空简化了一下,做了一个例子. 效果图如 ...

  6. [转]Android中设置TextView的颜色setTextColor

    [转自]http://txlong-onz.iteye.com/blog/1249609 Android中设置TextView的颜色setTextColor android中设置TextView的颜色 ...

  7. Android中实现ListView圆角效果[转]

    本文演示如何Android中实现ListView圆角效果. 无论是网站,还是APP,人们都爱看一些新颖的视图效果.直角看多了,就想看看圆角,这几年刮起了一阵阵的圆角设计风:CSS新标准纳入圆角元素,特 ...

  8. 在Eclipse Android中设置模拟器屏幕大小

    在Eclipse Android中设置模拟器屏幕大小是本文要介绍的内容,主要是来了解并学习Eclipse Android中模拟器的设置,具体关于Eclipse Android内容的详解来看本文. 方法 ...

  9. Android中设置TextView的颜色setTextColor

    tv.setTextColor(Color.parseColor("#FFFFFF")); tv.setTextColor(Color.WHITE); tv.setTextColo ...

随机推荐

  1. js如何在指定页面跳转到另一指定页面

    要实现从一个页面A跳到另一个页面B,js实现就在A的js代码加跳转代码 JS跳转大概有以下几种方式: 第一种:(跳转到b.html)<script language="javascri ...

  2. Autofac 组件、服务、自动装配(2)

    一.组件 创建出来的对象需要从组件中来获取,组件的创建有如下4种(延续第一篇的Demo,仅仅变动所贴出的代码)方式: 1.类型创建RegisterType AutoFac能够通过反射检查一个类型,选择 ...

  3. Stsadm 导入导出子站点

    SharePoint通过stsadm备份和还原子网站(不是网站集)   大家都知道SharePoint的stsadm命令提供了很多便捷甚至是唯一的操作方法! 这里列出的所有命令:http://www. ...

  4. 第13章 Swing程序设计----JFrame窗体

    JFrame窗体是一个容器,它是Swing程序中各个组件的载体,可以将JFrame看作是承载这些Swing组件的容器. 在开发应用程序时可以通过继承java.swing.JFrame类创建一个窗体,在 ...

  5. 后台处理excel下载输出流

    前台 <ul class="navtop-right"> <li > <a href="/portal/trip/importExec&qu ...

  6. 禁止root远程登录 sshd问题:A protocol error occurred. Change of username or service not allowed

    在研究Linux安全的时候遇到一个问题,原本打算修改linux直接远程root登陆,修改为sshd的配置文件后 Nano /etc/ssh/sshd_config 把#PermitRootLogin ...

  7. Validation of viewstate MAC failed machinekey生成、使用方法

    前段时间公司为了减轻服务器压力,对网页做了集群,分布在多台服务器,通过DNS轮回解析到各台服务器,结果页面只要打开停留到DNS解析到下一个地址,就会出现出下错误信息. Validation of vi ...

  8. 转 : net use的使用

    老是忘了 net use 怎么样,今天在网上找一篇,贴在这,感谢原作者分享.     1 查看远程主机的共享资源(但看不到默认共享) net view \\IP 2向远程主机复制文件 copy \路径 ...

  9. idea 端口占用

    netstat -anp | grep 8080 lsof -i:8080 查看8080端口被什么进程占用 kill (-s 9) 12903 -s 9 强制 尽快 12903 上面查出的 PID 其 ...

  10. 从头到尾彻底解析Hash表算法

    作者:July.wuliming.pkuoliver 说明:本文分为三部分内容, 第一部分为一道百度面试题Top K算法的详解:第二部分为关于Hash表算法的详细阐述:第三部分为打造一个最快的Hash ...