2012-01-17 60 views
0

我有以下代码,它使用手势来执行滚动我的hfm,但覆盖此hfm,本质上覆盖屏幕上的所有字段,使它们无用。这怎么可能,我认为这个特定的touchEvent属于hfm?我如何解决这个问题,只是禁用触摸滚动hfm?黑莓:覆盖触摸事件的经理覆盖所有其他领域

gallery = new CustomHFM(){ 



      protected void sublayout(int maxWidth, int maxHeight){ 
       super.sublayout(maxWidth, 200); 
       setExtent(maxWidth,200); 
      } 


      protected boolean touchEvent(TouchEvent message){ 

       int eventCode = message.getEvent(); 

       if(eventCode == TouchEvent.GESTURE){ 
        System.out.println("SWIPE GESTURE"); 
        TouchGesture g = message.getGesture(); 
        int gesturecode = g.getEvent(); 
        int direction = g.getSwipeDirection(); 

         //gallery.setHorizontalScroll(page_two, true); 
        if(direction == TouchGesture.SWIPE_WEST) 
         slideNext(); 

        if(direction == TouchGesture.SWIPE_EAST) 
         slidePrev(); 

        pressed = true; 
       } 

       if(eventCode == TouchEvent.UP){ 
       pressed = false; 

       //slide(); 
       } 


       return true; 
      } 
     }; 
+0

在SWIPE_WEST和EAST下添加return true,并且super.touchEvent(消息)不起作用 – Adam 2012-01-17 14:55:25

回答

1

您应该从touchEvent-method只有当经理消耗的情况下返回true,它不应该继续传播到整个组织。也许你应该在处理之前调用super.touchEvent,但我不确定这一点。

+0

您怎么知道管理器何时使用该事件?作为临时修复,只有当x y pos是经理所在的位置时,我才隔离返回true,但是如果屏幕是动态的并且经理处于滚动和不同位置,则此方法不起作用 – Adam 2012-01-17 16:07:20

+0

这由您决定。通常,如果您因某些事件而采取行动,则不希望UI的其他部分响应该事件,因此您告诉系统已经消耗了该事件。 – esaj 2012-01-17 16:09:14

+0

@Adam我们如何实现slideNext和slidePrev方法。请分享一些代码片段。 – SB24 2013-01-25 10:53:35