关于点击ListView使其中的text变色的有关问题

关于点击ListView使其中的text变色的问题

1.用selector和setTextColor的方式,具体不讲了,因为网上很多,给个链接http://gundumw100.iteye.com/blog/1169065

2. 上述方法在listview里有时候会神奇的不好使,那么就得用代码了,这是lz搞了一天搞的啊,你们可要珍惜!

在adapter的getView()方法里加入下面的话

		view.setOnTouchListener(new View.OnTouchListener() {
			
			@Override
			public boolean onTouch(View v, MotionEvent event) {
				// TODO Auto-generated method stub
				Log.d("meng", "action + "+event.getAction());
				if(event.getAction() == 0){
					view.setBackgroundColor(Color.parseColor("#2cb1e1"));
					holder.name.setTextColor(Color.WHITE);
					holder.text1.setTextColor(Color.WHITE);
					holder.text2.setTextColor(Color.WHITE);
				}else if(event.getAction() == 2){
					view.setBackgroundColor(Color.parseColor("#2cb1e1"));
					holder.name.setTextColor(Color.WHITE);
					holder.text1.setTextColor(Color.WHITE);
					holder.text2.setTextColor(Color.WHITE);
				}else if(event.getAction() == 3){
					view.setBackgroundColor(Color.TRANSPARENT);
					holder.name.setTextColor(Color.BLACK);
					holder.text1.setTextColor(R.color.profile_color);
					holder.text2.setTextColor(R.color.profile_color);
				}else if(event.getAction() == 1){
					view.setBackgroundColor(Color.TRANSPARENT);
					holder.name.setTextColor(Color.BLACK);
					holder.text1.setTextColor(R.color.profile_color);
					holder.text2.setTextColor(R.color.profile_color);
				}else{
					Log.d("meng", "else + "+event.getAction());
					view.setBackgroundColor(Color.TRANSPARENT);
					holder.name.setTextColor(Color.BLACK);
					holder.text1.setTextColor(R.color.profile_color);
					holder.text2.setTextColor(R.color.profile_color);
				}
				
				return false;
			}


注意:如果要同时换背景,最好用color值,用图片会产生布局混乱的问题,而且必须用

view.setBackgroundColor(Color.parseColor("#2cb1e1"));

不要用你自己定义的id R.color.xxx,这样颜色会变的,而且不能用

view.setBackgroundResource(R.color.item_click_color); 

因为个别手机尤其是4.0系统的手机会出现点击一会就不变色的bug!

else其实可有可无了,是为了保险加入的。


一个问题有时候能困扰人一天,真2啊。