我创建了一个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
选择和未选择的标签设置了不同的颜色&# 39; s API)ViewPager
的高度也会更改为正确的数字,但标签的内容有误(有时它不会更改,有时会变为空白)。 我发现当我点击TabLayout
中的标签时,总是调用onPageSelected()。但是,如果我移动更改LayoutParams
ViewPager
的代码,则可以正确调用它。
那么,问题是什么? 如何针对不同的标签动态更改ViewPager的高度?提前感谢您的任何答案/评论!
答案 0 :(得分:0)
答案是:设置<select data-ng-model="myval">
<option value="? number:2 ?"></option>
<option value="2" class="ng-binding">Value 1</option>
<option value="3" class="ng-binding">Value 2</option>
</select>
后,我应该致电params.height
立即进行更改。
在许多情况下,不需要mViewPager.requestLayout()
或View#requestLayout()
。但这一次,其中一个应该出现。