2011-11-15 17 views
14

मैं अपने ऐप में पीडीएफ पृष्ठों को प्रदर्शित करने के लिए एंड्रॉइड संगतता पैकेज संस्करण 4 का उपयोग कर रहा हूं। मैंने पेजर एडाप्टर & क्षैतिज स्क्रॉल व्यू जैसे पीडीएफ पृष्ठों को प्रदर्शित करने के लिए व्यूपेगर का उपयोग किया है।एंड्रॉइड में ViewPager में पेजिंग को अक्षम और सक्षम करना

अब समस्या पेजिंग से संबंधित सामग्री में है। मैं इस थ्रेड android: ViewPager and HorizontalScrollVIew के अनुसार व्यूपर के अंदर बच्चों का पता लगाकर पेजिंग को रोकने में सक्षम हूं, लेकिन जब उपयोगकर्ता उस दृश्य के बाहर छूता है तो मैं इसे वापस कैसे सक्षम कर सकता हूं। मैंने कस्टमव्यूपेजर के लिए निम्नलिखित कोड का उपयोग किया है।

public class CustomViewPager extends ViewPager { 

     private boolean enabled; 
     private int childId; 

     public CustomViewPager(Context context, AttributeSet attrs) { 
      super(context, attrs); 
      this.enabled = true; 
     } 

     public void setChildId(int childId) { 
      this.childId = childId; 
     } 

     @Override 
     public boolean onInterceptTouchEvent(MotionEvent event) { 
      boolean result = false; 
      View scroll = getChildAt(childId); 
      if (scroll != null) { 
       Rect rect = new Rect(); 
       CommonLogic.logMessage("PDF Page Rectangle ", TAG, Log.VERBOSE); 
       scroll.getHitRect(rect); 
       if (rect.contains((int) event.getX(), (int) event.getY())) { 
        setPagingEnabled(false); 
        result = true; 
       } 
      } 
      return result; 
     } 

     @Override 
     public boolean onTouchEvent(MotionEvent event) { 
      if (this.enabled) { 
       return super.onTouchEvent(event); 
      } 
      return false; 
     } 

     public void setPagingEnabled(boolean enabled) { 
      this.enabled = enabled; 
     } 
    } 

पीडीएफ पेज के बाहर छूने के लिए प्रयास करते हैं तो यह भी कहा कि if(scroll!=null) दोनों अभिविन्यास में सच हो जाता है।

क्या कोई मेरी मदद कर सकता है कि इसे वापस कैसे सक्षम किया जाए ताकि पेजिंग ViewPager में जारी रहे।

+1

को this.enable की और सेट डिफ़ॉल्ट मान "this.enable लौटने" करने के लिए आप इस tryed है: http://stackoverflow.com/a/2655740/969325 – Warpzit

उत्तर

3

मुझे पेजिंग छवि फ़ाइलों के साथ एक ही समस्या हो रही थी जिसे ज़ूम करने के लिए चुटकी की आवश्यकता होती है। बस छवि को ज़ूम इन करते समय पेजिंग को अक्षम करने का तरीका ढूंढें और पूरी छवि दिखाए जाने पर इसे सक्षम करें। मैंने इसे इस तरह हल किया और लगता है कि आप एक ही काम कर सकते हैं। पहले का विस्तार: वर्ग MyViewPager फैली ViewPager {...} और फिर उस वर्ग ओवरराइड में दो तरीकों

@Override 
public boolean onTouchEvent(MotionEvent event) { 
    if (YOUR_CRITERIA_TOENABLE_DISABLE) { 
     return true; 

    } else { 
     return super.onTouchEvent(event); 
    } 
} 

@Override 
public boolean onInterceptTouchEvent(MotionEvent event) { 
    return super.onInterceptTouchEvent(event); 
} 

एक्सएमएल लेआउट या कोड से गतिशील निर्माण में आपके विचार पेजर का उपयोग सुनिश्चित करें निम्नलिखित।

0

आप इसे गलत पर सेट कर रहे हैं लेकिन इसे वापस सही करने के लिए कोई मामला नहीं है। साथ ही, आपका अवरोध स्पर्श तर्क थोड़ा अजीब लगता है ... केवल एक बार जब आप पेजर को अवरुद्ध करने की अनुमति देते हैं (और इस प्रकार onTouchEvent() में संसाधित होता है) तब होता है जब आप पेजिंग को गलत पर सेट करते हैं। निम्नलिखित के बारे में कैसे?

@Override 
    public boolean onInterceptTouchEvent(MotionEvent event) { 
     boolean result = true; 
     View scroll = getChildAt(childId); 
     if (scroll != null) { 
      Rect rect = new Rect(); 
      CommonLogic.logMessage("PDF Page Rectangle ", TAG, Log.VERBOSE); 
      scroll.getHitRect(rect); 
      if (rect.contains((int) event.getX(), (int) event.getY())) { 
       setPagingEnabled(false); 
       result = false; 
      } else { 
       setPagingEnabled(true); 
      } 
     } 
     return result; 
    } 
1
@Override 
public boolean onTouchEvent(MotionEvent event) { 
    if (this.enabled) { 
      return super.onTouchEvent(event); 
    } 
    return false; 
} 

public void setPagingEnabled(boolean enabled) { 
    this.enabled = enabled; 
} 

की जगह "return false" झूठे

संबंधित मुद्दे