Mat*_*ska 15 android android-fragments android-viewpager
我试图ViewPager用不同的高度放置不同的碎片.我知道这wrap_content不起作用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()));
}
}
Run Code Online (Sandbox Code Playgroud)
不幸的是它没有用,因为getMeasuredHeight()on 返回的值Fragment是错误的.我究竟做错了什么?
cza*_*aku 19
这是我的解决方案:
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);
}
});
Run Code Online (Sandbox Code Playgroud)
我在onResume()中调用它;