2012-04-17 3 views
4

私はタッチイベントに応答する必要のあるAndroidアプリを作成しています。私は、私のアプリケーションでカスタムカラーにリスト項目の色を変更したい。私は次のコードを書いていますが、MotionEvent.ACTION_DOWNセクションだけが動作しています。 LogCatは、ACTION_CANCELACTION_UPがまったく呼び出されないことを示しています。私のコードがなぜ機能していないのか理解してもらえますか?MotionEvent.ACTION_UPまたはMotionEvent.ACTION_CANCELが表示されない

これは私のコードです...

view.setOnTouchListener(new OnTouchListener() { 

    public boolean onTouch(View v, MotionEvent event) { 
     if (event.getAction() == MotionEvent.ACTION_UP) { 
      view.setBackgroundColor(Color.rgb(1, 1, 1)); 
      Log.d("onTouch", "MotionEvent.ACTION_UP"); 
     } 
     if (event.getAction() == MotionEvent.ACTION_DOWN) { 
      view.setBackgroundColor(Color.rgb(23, 128, 0)); 
      Log.d("onTouch", "MotionEvent.ACTION_DOWN"); 
     } 
     if (event.getAction() == MotionEvent.ACTION_CANCEL) { 
      view.setBackgroundColor(Color.rgb(1, 1, 1)); 
      Log.d("onTouch", "MotionEvent.ACTION_CANCEL"); 
     } 
     return false; 
    } 
}); 
+1

あなたが(最初の 'if'文の前に)メソッドの最初の行としてログを置いてもらえません。メソッドは、あなたが期待するすべての時間にトリガーされていますか?また、移動している場合は、http://developer.android.com/reference/android/view/MotionEvent.html – wattostudios

答えて

19

あなたはonTouchメソッドからfalseを返す場合、それ以上のイベントがリスナーに配信されなかっます。少なくともevent.getAction() == MotionEvent.ACTION_DOWNの場合は、trueを返す必要があります。

下記のようにコードをリファクタリング:

view.setOnTouchListener(new OnTouchListener() { 

@Override 
public boolean onTouch(View v, MotionEvent event) { 
if (event.getAction() == MotionEvent.ACTION_UP) { 
    view.setBackgroundColor(Color.rgb(1, 1, 1)); 
    Log.d("onTouch", "MotionEvent.ACTION_UP"); 
} 
if (event.getAction() == MotionEvent.ACTION_DOWN) { 
    view.setBackgroundColor(Color.rgb(23, 128, 0)); 
    Log.d("onTouch", "MotionEvent.ACTION_DOWN"); 
    return true; 
} 

if (event.getAction() == MotionEvent.ACTION_CANCEL) { 
    view.setBackgroundColor(Color.rgb(1, 1, 1)); 
    Log.d("onTouch", "MotionEvent.ACTION_CANCEL"); 
} 
return false; 
} 
}); 
+0

に記載されているように、イベントが*バッチ処理されている可能性があります。こんにちはRajesh、同じ問題を抱えています同じ種類のコード。私が真実に戻ってもそれは私のために働かない。そして、もし私がボタンをドラッグしようとすると、私はACTION_UP(1)を全く得ていません。だから、何か別の解決策を提案してもらえますか? – Raj

+0

新しい質問として投稿し、十分な詳細を提供してください。あなたの問題は全く異なるかもしれません。 – Rajesh

+0

こんにちはRajesh、リプレイをありがとう。私のためにACTION_UPは呼び出されていません。しかし、もし私がACTION_CANCELを追加すればその作業。助けてくれてありがとう。 – Raj

関連する問題