2012-01-17 93 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