2012-10-24 188 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);'不會被執行,所以顏色保持不變。 –

相關問題