2012-10-24 145 views
-1

我在我的android应用程序中有一个自定义listview。当用户按下列表中的项目时,我想更改所按项目的背景颜色。这是该行为的代码:onTouch on ListView,更改项目的颜色

tempView.setOnTouchListener(new OnTouchListener() { 

      @Override 
      public boolean onTouch(View arg0, MotionEvent event) { 

       if (event.getAction() == MotionEvent.ACTION_DOWN) { 
        isDown = false; 
        tempView.setBackgroundColor(Color.parseColor("#f47920")); 

       } 

       if (event.getAction() == MotionEvent.ACTION_UP) { 
        tempView.setBackgroundResource(R.drawable.list_selector_focused); 
       } 

       if(event.getAction() == MotionEvent.ACTION_MOVE) { 
        tempView.setBackgroundResource(R.drawable.list_selector_focused); 
       } 


       return false; 
      } 
     }); 

但是,当我“一扔”我的手指在屏幕上滚动listview,项目还标,而“压”的颜色会是静态的。我怎样才能避免这种情况?

+1

你为什么不尝试在你的ListView上使用'selector'。你见过这个:http://stackoverflow.com/questions/4247385/how-to-change-color-of-listview-items-on-focus-and-on-click? –

+0

是的,我确定。但是,在java中也必须有一种方法来做到这一点? –

+0

您想要在按住手指的同时更改背景,或者当他们完成点击时? – Carnal

回答

1

MotionEvent.ACTION_UP将不会被捕获,除非您从onTouch()返回true以通知Android系统您处理了整个触摸事件。

+0

谢谢你的抬头,但如果我用手指滚动列表视图,项目仍会标记为“按下的颜色”。 –

+0

我的猜测是,由于ACTION_UP没有设置,因此'tempView.setBackgroundResource(R.drawable.list_selector_focused);'不会被执行,所以颜色保持不变。 –

相关问题