2017-05-08 67 views
0

我在使用TabLayoutViewPager時出現了一個奇怪的問題。當我滑動標籤時,短時間內只顯示文本的一小部分。如果我選擇標籤,則不存在這樣的問題。什麼可能是錯的?使用滑動手勢的ViewPager渲染延遲

issue

編輯: 我已經重寫我的ViewPageronMeasure方法:

@Override 
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { 
    super.onMeasure(widthMeasureSpec, heightMeasureSpec); 

    if(null != getAdapter()) { 

     int height = 0; 
     View child = ((FragmentPagerAdapter) getAdapter()).getItem(getCurrentItem()).getView(); 
     if (child != null) { 
      child.measure(widthMeasureSpec, MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED)); 
      height = child.getMeasuredHeight(); 

      if (android.os.Build.VERSION.SDK_INT == android.os.Build.VERSION_CODES.JELLY_BEAN && height < getMinimumHeight()) { 
       height = getMinimumHeight(); 
      } 
     } 

     getLayoutParams().height = height; 
    } 

    super.onMeasure(widthMeasureSpec, heightMeasureSpec); 
} 

此動態設置每個ViewPager片段的高度。也許這與問題有關?

+0

你在做'setOnUserVisibleHint'的東西嗎? –

+0

@VeneetReddy no。 –

+0

停在這裏。爲什麼要重新計算「onMeasure」中頁面的高度?你是否意識到性能後果?這看起來大錯特錯... – Mike

回答

0

請將您的屏幕頁面限制設置爲片段中的選項卡數量。

例子:
在onCreate方法:

final ViewPager viewPager = (ViewPager) findViewById(R.id.viewpager_dairy); 
     viewPager.setAdapter(new TabsDairyAdapter(getSupportFragmentManager())); 

     viewPager.setOffscreenPageLimit(5); // 5 is number of tab you have 

爲我工作:)

+0

現在剩下的文字完全不顯示:/ –

+0

好的,請嘗試將OffScreenPagelimit設置爲零; viewPager.setOffscreenPageLimit(0); –

+0

再次,全文延遲顯示。也許問題出在自定義適配器上?我已經覆蓋'onMeasure'方法,因此它可以動態地改變高度。 –