是否可以在android中为一个容器编写两个监听器?

时间:2014-01-15 15:13:54

标签: android performance android-layout android-intent android-listview

在我的应用程序中我有视图鳍状肢是否可以使用onclick,ontouch侦听器为一个视图鳍状肢...

我试过但是它的工作一半。假设onclick工作正常,ontouch监听器对触摸监听器不起作用。我试图使用onclick监听器进行整个布局,并使用ontouch监听器进行视图翻转,但这也无效。

On touch Listener:

viewFilper.setOnTouchListener(new OnTouchListener() {

  @Override
  public boolean onTouch(final View v, final MotionEvent event) {
   // TODO Auto-generated method stub
      Here the code for flip the pages
      return true;
      }
});

单击Listener:

viewFilper.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
 Here i use intent to change activity regarding with the details of view flipper
     }
});

那么如何为同一个容器使用onclick和ontouch监听器呢?

我需要你的帮助伙伴。提前致谢

1 个答案:

答案 0 :(得分:0)

OnTouchListener应该工作正常,问题是你返回true,所以你“吸收”触摸事件并且OnClickListener不起作用。

如果您在触摸侦听器上返回false并且在单击时返回true,则它应该可以正常工作。

如果您将使用触控侦听器移动视图,OnClick将不会被调用,因为触摸事件不会被吸收所以我建议您在视图被移动或释放时返回true。

示例:

    view.setOnTouchListener(new View.OnTouchListener() {
        public boolean  onTouch(View v,MotionEvent event) {
            iAction = event.getActionMasked();
            switch (iAction) {
            case MotionEvent.ACTION_MOVE:
                // your code here
                bExitValue = true;
                break;
            case MotionEvent.ACTION_DOWN:
                bExitValue = false;
            break;

            case MotionEvent.ACTION_UP:
                //no need to set to true because it has already gone through ACTION_MOVE, if it didn't it will return false and the click listener will absorb it
            break;

    }
    return (bExitValue);        
}
});

    viewFilper.setOnClickListener(new OnClickListener() {

      @Override
      public void onClick(View arg0) {
         //your code
      }
    });