关于点击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啊。