2012-11-16 16 views
13

सेट करें मैं विभिन्न ऊंचाइयों के साथ विभिन्न टुकड़ों के साथ ViewPager डालने का प्रयास कर रहा हूं। मुझे पता है कि wrap_contentViewPager के साथ काम नहीं कर रहा है इसलिए मैं पेजर ऊंचाई को द्विपक्षीय रूप से सेट करने की कोशिश कर रहा हूं। मैं एक पेज श्रोता में पेजर ऊंचाई की स्थापना कर रहा हूँ:गतिशील रूप से ViewPager ऊंचाई

... 
     indicator.setOnPageChangeListener(new OnPageChangeListener() { 

      @Override 
      public void onPageSelected(int selected) { 
       final View view = fragments[selected].getView(); 
       if (view != null) { 
        pager.setLayoutParams(new LayoutParams(
          LayoutParams.MATCH_PARENT, view 
            .getMeasuredHeight())); 

       } 

      } 

दुर्भाग्य से यह काम नहीं कर रहा है, क्योंकि Fragment पर getMeasuredHeight() द्वारा दिए गए मान गलत है। मैं क्या गलत कर रहा हूं? viewpager की onLayout में अपनी पैरामीटर सेट करने के लिए

उत्तर

16

यह मेरा समाधान है:

ViewTreeObserver viewTreeObserver = mViewPager.getViewTreeObserver(); 
    viewTreeObserver 
      .addOnGlobalLayoutListener(new OnGlobalLayoutListener() { 

       @Override 
       public void onGlobalLayout() { 

        LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(
          LinearLayout.LayoutParams.WRAP_CONTENT, 
          LinearLayout.LayoutParams.WRAP_CONTENT); 

        int viewPagerWidth = mViewPager.getWidth(); 
        float viewPagerHeight = (float) (viewPagerWidth * FEATURED_IMAGE_RATIO); 

        layoutParams.width = viewPagerWidth; 
        layoutParams.height = (int) viewPagerHeight; 

        mViewPager.setLayoutParams(layoutParams); 
        mViewPager.getViewTreeObserver() 
          .removeGlobalOnLayoutListener(this); 
       } 
      }); 

मैं onResume में इसे कहते();

+0

लेकिन OnGlobalLayoutListener को नहीं कहा जाता है। क्यूं कर? –

+0

क्या आप निश्चित हैं? क्या आपने इसे लॉग किया और सुनिश्चित किया कि यह नहीं है? – czaku

+4

FEATURED_IMAGE_RATIO क्या है ?? मैं इसे एक fragmentpageradapter –

1

कोशिश()

+0

तो क्या आप viewPager को बढ़ाने का सुझाव दे रहे हैं? समस्या यह है कि पेजर में प्रदर्शित टुकड़े की ऊंचाई होनी चाहिए, इसलिए मुझे समझ में नहीं आता कि यह Layout() में कैसे हल किया जा सकता है। – Matroska

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