android setOnLongClickListner不能与onTouch事件一起使用

时间:2010-10-08 10:39:57

标签: android imageview

我有一个可拖动和缩放的图像视图但现在我还需要在我的图像视图上放置setOnLongClickListner。我已经这样做但它没有用。但当我禁用ontouch事件时,它开始工作。请有人告诉我如何解决这个问题。 这是我的代码

    image.layout(0, 30, screenWidth, screenHeight - 30);
    image.setScaleType(ImageView.ScaleType.FIT_XY);


    params = new RelativeLayout.LayoutParams(screenWidth, screenHeight - 30);
    params.leftMargin = 0;
    params.topMargin = 30;


    layout.addView(image, params);

    image.setOnLongClickListener(new View.OnLongClickListener() {
        public boolean onLongClick(View v) {


            Log.i("its working", "its working");

            return true;
                    }
    });

    image.setOnTouchListener(this);
我会非常感激的。

非常感谢。

4 个答案:

答案 0 :(得分:2)

我认为Object可以有onClick或onTouch,它将使用最后定义的内容。我最近在一些应用程序中也注意到了这一点。

答案 1 :(得分:2)

根据developer docs

  

从这些事件侦听器返回true将停止将事件传播到其他事件侦听器,并且还将阻止对View中的默认事件处理程序的回调。因此,确保在返回true时要终止事件< / p>

因此,在您处理事件的方法中返回false可能会让您更接近您想要实现的目标

答案 2 :(得分:1)

我尝试了“返回假”。它会触发它们。对于以下示例,它将在标题上显示不同的消息。

public boolean onTouch(View v, MotionEvent event) {   
        // TODO Auto-generated method stub 
          int ea=event.getAction();                                    

          switch(ea){                                                       
          case MotionEvent.ACTION_MOVE:                                 
           int l=v.getLeft();                                       
           int b=v.getBottom();                                     
           int r=v.getRight();                                      
           int t=v.getTop();   
           String message = "l:"+l + "t:" + t+
             "r:"+r + "b:"+ b;
           this.setTitle(message);                                     
          }  
          return false;
}

@Override
public void onClick(View v) {
    // TODO Auto-generated method stub
        this.setTitle("Click");
}

@Override
public boolean onLongClick(View arg0) {
    // TODO Auto-generated method stub
    this.setTitle("Long Click");
    return false;
}

答案 3 :(得分:1)

在搜索和尝试,错误和希望与你合作之后,它与我合作很好

android:clickable="true"添加到XML中的ImageView

2 - 在您的活动或视图中,并确保return false ;

imageView.setOnTouchListener(new OnTouchListener() {
        @TargetApi(11)
        public boolean onTouch(View v, MotionEvent event) {
            // TODO Auto-generated method stub          
                Log.v(TAG, "Touched Here");
                return false;
        }
    });

3-然后最后一步确保return true;

imageView.setOnLongClickListener(new OnLongClickListener() {

        public boolean onLongClick(View v) {
            // TODO Auto-generated method stub
            Log.v(TAG, "Long Pressed Here");
            return true;
            }        
        });

它适用于Touch和Long Press