0

OnClickListenerと の両方をOnTouchListener画像ビューに追加しようとしています。以下は、画像ビューの作成方法です

dialogImage = (ImageView)findViewById(R.id.dialogImage);

以下は、リスナーの設定方法です

dialogImage.setOnClickListener(dialogBoxClicked);
dialogImage.setOnTouchListener(imageViewSwiped);

以下はリスナーメソッドの実装です

public OnClickListener dialogBoxClicked = new OnClickListener()
    {

        @Override
        public void onClick(View v) 
        {
                      //To do has been removed because the code is too big
            }

    };

OnTouchListener imageViewSwiped = new OnSwipeTouchListener()
    {
         public void onSwipeRight() 
         {
             currentlyActiveQuestion++;
             currentWord = words.get(currentlyActiveQuestion);
             setUI();
         }

          public void onSwipeLeft() 
          {
              currentlyActiveQuestion--;
              currentWord = words.get(currentlyActiveQuestion);
              setUI();
          }
    };

ここでは、左右のスワイプを監視するためにOnTouchListener呼び出されるクラスによって実装されます。OnSwipeTouchListenerこのクラスはここにあります - https://stackoverflow.com/a/12938787/1379286

しかし、今の問題は、 をOnTouchListener画像ビューに設定すると、OnClickListenerが応答しないか、本来すべきことを実行しないことです。ImageView は にのみ応答していOnTouchListenerます。削除するOnTouchListenerOnClickListener動作します。私は仮想デバイス WVGA5.1 と Galaxy Nexus でこれをテストしましたが、実際の電話を持っていないため、実際の電話ではテストしませんでした。

どうすればこれを解決できますか?

編集

どんなコード例でも大歓迎です

4

3 に答える 3

2

action_up 時に View.performClick() を呼び出すことができます。これにより、実際のクリックが発生したときにクリック イベントが呼び出されます。それが役に立てば幸い。

your_txtView.setOnClickListener(new TextView.OnClickListener(){
    public void onClick(View v) {
        // TODO Auto-generated method stub

    }
});

your_txtView.setOnTouchListener(new TextView.OnTouchListener(){
        @Override
public boolean onTouch(View v, MotionEvent event) {
    if (MotionEvent.ACTION_DOWN == event.getAction()) {

    } else if (MotionEvent.ACTION_UP == event.getAction()) {
        v.performClick();
    }

    return true;
}
});
于 2013-07-16T08:14:49.360 に答える
1

OnTouchListener はクリック イベントをフックします。代わりにクリック イベントを処理します。この質問の答えを確認してください

于 2013-07-16T08:10:44.790 に答える
0

From my experience, If you can't have both onTouchListener and onClickListener for the same view. If you want your onClickListener to work, set clickable="true" in the XML.

于 2013-07-16T08:11:28.550 に答える