当前位置: 代码迷 >> Android >> ListView 触摸时,背景色,item都会变化,如何做
  详细解决方案

ListView 触摸时,背景色,item都会变化,如何做

热度:61   发布时间:2016-05-01 21:58:59.0
ListView 触摸时,背景色,item都会变化,怎么做?
现在本人要实现这样一个效果。下图是一个ListView列表,当触摸某个条目时,背景色会变绿,

ImageView会更改图标,TextView的文字会变成红色,手指移开时又会恢复原始状态。




如果仅仅是改变背景色还好弄点,为ListView设置selector就可以了,但是目前还要改变Item上控件的内容就比较麻烦了,本以为采用onTouch()事件可以搞定
但是设置后,ListView本身的点击事件就会被屏蔽。郁闷中......



------解决方案--------------------
貌似用这个属性?
android:drawSelectorOnTop="false"
------解决方案--------------------
<ListView android:id="@id/android:list"
android:cacheColorHint="#00000000"
/>
或者:
代码中写明listview.setCacheColorHint(0);

------解决方案--------------------
mListView.setOnItemClickListener(new OnItemClickListener() {

public void onItemClick(AdapterView<?> arg0, View v,
int position, long arg3) {
v.setBackgroundColor(Color.BLUE);
}
}
------解决方案--------------------
listview.setOnItemClickListener();
------解决方案--------------------
设置selector是不行的,修改ListView的adapter,在getview()中取要处理的控件对象进行效果处理。
------解决方案--------------------
可以让listview监听OnTouchListener

list.setOnTouchListener(new OnTouchListener() {

@Override
public boolean onTouch(View v, MotionEvent event) {
// TODO Auto-generated method stub
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
Toast.makeText(ListViewTween.this, "down", 1000).show();
break;

default:
break;
}
return false;
}
});
然后你在那个Case里面把View强转为listview,然后改变它的属性就可以了!
------解决方案--------------------
探讨

可以让listview监听OnTouchListener

list.setOnTouchListener(new OnTouchListener() {

@Override
public boolean onTouch(View v, MotionEvent event) {
// TODO Auto-generated method stub
switch (event.ge……
  相关解决方案