'OnClickListener'没有响应

时间:2013-07-16 08:04:42

标签: android eclipse android-imageview onclicklistener ontouchlistener

我正在尝试将OnClickListenerOnTouchListener添加到我的图片视图中。以下是图像视图的创建方式

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。如果我删除OnTouchListener,则OnClickListener有效。我在eclipse中的虚拟设备WVGA5.1和Galaxy Nexus中进行了测试,而不是真正的手机,因为我没有。

我该如何解决这个问题?

修改

非常感谢任何代码示例

3 个答案:

答案 0 :(得分:2)

您可以在action_up时调用View.performClick()。这会导致在发生实际点击时调用click事件。希望它有所帮助。

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;
}
});

答案 1 :(得分:1)

OnTouchListener挂钩click事件。处理其中的click事件。查看this question

上的答案

答案 2 :(得分:0)

根据我的经验,如果你不能同时拥有onTouchListener和onClickListener。如果您希望onClickListener工作,请在XML中设置clickable="true"