![](/img/trans.png)
[英]How to change the current tab highlighter color in Android ViewPager?
[英]How to change height of ViewPager according to current tab?
我創建了一個DialogFragment
,里面有一個ViewPager
,它具有3個選項卡。 我想根據當前選項卡更改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
內的選項卡時 ,頁面無法始終切換到我要選擇的選項卡。 此外,我可以看到一些奇怪的行為,例如:
TabLayout
的API為選中和未選中的選項卡設置了不同的顏色) ViewPager
的高度也被更改為正確的數字,但是tab的內容是錯誤的(有時它沒有改變,有時變成空白)。 我發現當我單擊TabLayout
內的選項卡時,並不總是調用onPageSelected()。 但是,如果我移動更改ViewPager
LayoutParams
的ViewPager
,則可以正確調用它。
所以有什么問題? 以及如何動態更改不同選項卡的ViewPager的高度? 感謝您提前提出任何答案/評論!
答案是:設置params.height
,我應該調用mViewPager.requestLayout()
以使更改立即生效。
在許多情況下,不需要View#requestLayout()
或View#setLayoutParams()
。 但是這次,其中一個應該出現。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.