0
我創建了一個DialogFragment
,裏面有一個ViewPager
,它有3個選項卡。我想根據當前標籤更改ViewPager
的高度。這裏是我的代碼:如何根據當前標籤更改ViewPager的高度?
mViewPager.setAdapter(mAdapter);
mTabLayout.setupWithViewPager(mViewPager); //TabLayout of Android Support Design Library
mViewPager.addOnPageChangeListener(new ViewPager.SimpleOnPageChangeListener() {
@Override
public void onPageSelected(int position) {
super.onPageSelected(position);
ViewGroup.LayoutParams params = mViewPager.getLayoutParams();
params.height = mTabHeights.get(position);
}
});
這並不總是有用的。當我滾動ViewPager
時,它可以根據當前標籤動態更改高度,一切正常。但是,當我點擊TabLayout
內的標籤時,頁面不能總是變成我想要選擇的標籤。此外,我可以看到一些奇怪的行爲,如:
- 指示器滾動到正確的位置,但無論之前的標籤和標籤的textColors我要選擇不改變(我已經設置不同的顏色選擇和未選擇按
TabLayout
的API制定) - 該指標滾動到正確的位置,顏色也是正確的。
ViewPager
的高度也改爲正確的數字,但標籤的內容是錯誤的(有時它不會改變,有時會變成空白)。
我發現在點擊TabLayout
內的選項卡時並不總是調用onPageSelected()。但如果我移動更改LayoutParams
的ViewPager
的代碼,則可以正確調用它。
那麼,什麼問題? 如何爲不同的標籤動態更改ViewPager的高度?感謝您提前回復/評論!
使用此:https://github.com/rnevet/WCViewPager,它是處理WRAP_CONTENT和動態變化的高度ViewPager。 – Raanan
@Raanan我已經嘗試過,但它不適用於我的情況。 – ywwynm