android中设置ListView的选中的Item的背景颜色
ListView中没有默认的选择颜色,只有选择Item后的焦点颜色,鼠标点击时Item有颜色,放开鼠标后颜色也就没有了,要实现放开鼠标后选择项的背景还是有颜色的。
1、配置main.xml
- <?xml version="1.0" encoding="utf-8"?>
- <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:orientation="vertical" android:layout_width="fill_parent"
- android:layout_height="fill_parent">
- <ListView android:id="@+id/listView" android:listSelector="#000000"
- android:layout_width="fill_parent"
- android:layout_height="wrap_content" />
- </LinearLayout>
设置Item的获取焦点颜色为白色android:listSelector="#000000"(即不显示背景颜色)
2、配置用于ListView显示Item的button_layout.xml
- <?xml version="1.0" encoding="utf-8"?>
- <LinearLayout
- xmlns:android="http://schemas.android.com/apk/res/android"
- android:id="@+id/LinearLayoutButton"
- android:layout_width="144px"
- android:layout_height="99px"
- android:gravity="center"
- android:orientation="vertical">
- <TextView
- android:id="@+id/TextViewButton"
- android:layout_width="fill_parent"
- android:layout_height="fill_parent"
- android:textSize="20px">
- </TextView>
- </LinearLayout>
3、实现Activity
- package com.listButtonTest.www;
- import java.util.ArrayList;
- import android.app.Activity;
- import android.content.Context;
- import android.graphics.Color;
- import android.os.Bundle;
- import android.os.Handler;
- import android.os.Message;
- import android.view.LayoutInflater;
- import android.view.View;
- import android.view.ViewGroup;
- import android.widget.AdapterView;
- import android.widget.BaseAdapter;
- import android.widget.LinearLayout;
- import android.widget.ListView;
- import android.widget.TextView;
- public class listButtonTest extends Activity {
- private ListView listView = null;
- private ListAdapter listAdapter = null;
- /** Called when the activity is first created. */
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.main);
- listView = (ListView) this.findViewById(R.id.listView);
- ArrayList<ButtonView> buttonListView = new ArrayList<ButtonView>();
- ButtonView a = new ButtonView(R.string.l1);
- buttonListView.add(a);
- ButtonView b = new ButtonView(R.string.l2);
- buttonListView.add(b);
- ButtonView c = new ButtonView(R.string.l3);
- buttonListView.add(c);
- ButtonView d = new ButtonView(R.string.l4);
- buttonListView.add(d);
- ButtonView e = new ButtonView(R.string.l5);
- buttonListView.add(e);
- listAdapter = new ListAdapter(buttonListView);
- listView.setAdapter(listAdapter);
- listView.setDividerHeight(0);
- listView.setOnItemClickListener(new ListView.OnItemClickListener() {
- @Override
- public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
- long arg3) {
- // TODO Auto-generated method stub
- listAdapter.setSelectedPosition(arg2);
- listAdapter.notifyDataSetInvalidated();
- }
- });
- };
- public class ListAdapter extends BaseAdapter {
- ArrayList<ButtonView> arrayList = null;
- LayoutInflater inflater;
- View view;
- ButtonLayoutHolder buttonLayoutHolder;
- LinearLayout buttonLayout = null;
- TextView buttonText = null;
- private int selectedPosition = -1;// 选中的位置
- public ListAdapter(ArrayList<ButtonView> buttonListView) {
- // TODO Auto-generated constructor stub
- arrayList = buttonListView;
- }
- @Override
- public int getCount() {
- // TODO Auto-generated method stub
- return arrayList.size();
- }
- @Override
- public Object getItem(int position) {
- // TODO Auto-generated method stub
- return arrayList.get(position);
- }
- @Override
- public long getItemId(int position) {
- // TODO Auto-generated method stub
- return position;
- }
- public void setSelectedPosition(int position) {
- selectedPosition = position;
- }
- @Override
- public View getView(int position, View convertView, ViewGroup parent) {
- // TODO Auto-generated method stub
- inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
- view = inflater.inflate(R.layout.button_layout, null, false);
- buttonLayoutHolder = (ButtonLayoutHolder) view.getTag();
- if (buttonLayoutHolder == null) {
- buttonLayoutHolder = new ButtonLayoutHolder();
- buttonLayoutHolder.buttonLayout = (LinearLayout) view
- .findViewById(R.id.LinearLayoutButton);
- buttonLayoutHolder.textView = (TextView) view
- .findViewById(R.id.TextViewButton);
- view.setTag(buttonLayoutHolder);
- }
- buttonLayout = buttonLayoutHolder.buttonLayout;
- buttonText = buttonLayoutHolder.textView;
- if (selectedPosition == position) {
- buttonText.setSelected(true);
- buttonText.setPressed(true);
- buttonLayout.setBackgroundColor(Color.RED);
- } else {
- buttonText.setSelected(false);
- buttonText.setPressed(false);
- buttonLayout.setBackgroundColor(Color.TRANSPARENT);
- }
- buttonText.setTextColor(Color.WHITE);
- buttonText.setText(arrayList.get(position).textViewId);
- return view;
- }
- };
- }
- class ButtonView {
- int textViewId;
- ButtonView(int tId) {
- textViewId = tId;
- }
- }
- class ButtonLayoutHolder {
- LinearLayout buttonLayout;
- TextView textView;
- }
在listView的setOnItemClickListener事件中标记这次选择的Item的下标:listAdapter.setSelectedPosition(arg2);
然后调用listAdapter.notifyDataSetInvalidated()通知后台重新刷新界面。
在ListAdapter的getView()方法中,如果是选中的Item则显示背景颜色,如果不是则不显示背景颜色。
http://longyi-java.iteye.com/blog/976067
android中设置ListView的选中的Item的背景颜色的更多相关文章
- 【转】整理一下Android中的ListView
原文网址:http://sunbofu.blog.51cto.com/6431507/1280441 Android中的listview目测是一个使用频率很高的组件,所以今天来总结一下listview ...
- Android中的ListView属性使用总结
Android中使用ListView控件比较常见,如果能知道常用的一些属性使用,肯定会少很多坑. 1.ListView是常用的显示控件,默认背景是和系统窗口一样的透明色,如果给ListView加上背景 ...
- 【转】Android中设置TextView的颜色setTextColor--代码中设置字体颜色
原文网址:http://www.cnblogs.com/myphoebe/archive/2012/01/06/2314728.html android中设置TextView的颜色有方法setText ...
- 【转】Android中设置TextView的颜色setTextColor
原文网址:http://www.cnblogs.com/myphoebe/archive/2012/01/06/2314728.html android中设置TextView的颜色有方法setText ...
- Android中使用ListView绘制自定义表格(2)
上回再写了<Android中使用ListView绘制自定义表格>后,很多人留言代码不全和没有数据样例.但因为项目原因,没法把源码全部贴上来.近两天,抽空简化了一下,做了一个例子. 效果图如 ...
- [转]Android中设置TextView的颜色setTextColor
[转自]http://txlong-onz.iteye.com/blog/1249609 Android中设置TextView的颜色setTextColor android中设置TextView的颜色 ...
- Android中实现ListView圆角效果[转]
本文演示如何Android中实现ListView圆角效果. 无论是网站,还是APP,人们都爱看一些新颖的视图效果.直角看多了,就想看看圆角,这几年刮起了一阵阵的圆角设计风:CSS新标准纳入圆角元素,特 ...
- 在Eclipse Android中设置模拟器屏幕大小
在Eclipse Android中设置模拟器屏幕大小是本文要介绍的内容,主要是来了解并学习Eclipse Android中模拟器的设置,具体关于Eclipse Android内容的详解来看本文. 方法 ...
- Android中设置TextView的颜色setTextColor
tv.setTextColor(Color.parseColor("#FFFFFF")); tv.setTextColor(Color.WHITE); tv.setTextColo ...
随机推荐
- LeetCode OJ 110. Balanced Binary Tree
Given a binary tree, determine if it is height-balanced. For this problem, a height-balanced binary ...
- dns是什么
域名解析服务器,靠它把你要访问的网址找到然后把信息送到你电脑上.DNS 是域名系统 (Domain Name System) 的缩写,它是由解析器和域名服务器组成的.域名服务器是指保存有该网络中所有主 ...
- ios7.1 masonry布局中出现的问题
UITextView中如果添加了子空间,比如自己添加一个placeHolder,placeHolder的Label使用masonry布局,会出现崩溃,原因是:在UITextView没有对子控件进行布局 ...
- onPostCreate——Activity彻底运行起来之后的回调
记得之前想要在Activity布局完成,彻底跑起来之后,再获取当前Activity的窗口中,某个View的宽高,之前用的办法很土,弄个Handler,发个Message出来,使用sendMessage ...
- 将undefault和null的数据转换成bool类型的数据 使用!!
<script> var o={}; var a=null; console.info(!!o.name); </script> 输出false 此方法是将undefault和 ...
- 【dp】 poj 1157
不错的dp入门题 画出dp矩阵 每个dp[i][j]是由“其上”的状态或是“其左上”的状态转化而来,那我们选对角线和上边进行三角dp推导 #include<stdio.h> #incl ...
- phpmyadmin配置方式
简单的说,phpmyadmin就是一种mysql的管理工具,安装该工具后,即可以通过web形式直接管理mysql数据,而不需要通过执行系统命令来管理,非常适合对数据库操作命令不熟悉的数据库管理者,下面 ...
- download下载excel模板的代码
<%-- 直接在JSP页面中进行文件下载的代码(改 Servlet 或者 JavaBean 的话自己改吧), 支持中文附件名(做了转内码处理). 事实上只要向 out 输出字节就被认为是附件内容 ...
- 视频 -> 帧 浅析
原创:转载请注明出处 关于帧率 首先以下几个概念必须弄清楚 1.一个帧就是一个画面 2.视频有无数个帧组成 3.表达时间的量 CMTime 的定义: typedef struct { CMTimeV ...
- cell reuse & disposebag
For my project I've made base cell class TableViewCell: UITableViewCell { private(set) var disposeBa ...