Android ViewPager动态更新getPageWidth,无需刷新页面

时间:2017-06-22 16:35:00

标签: java android android-layout android-viewpager

我使用this libraryViewPager垂直滚动。 ViewPager有两个孩子(孩子是View,而不是Fragment' s:我希望他们中的一个永远是全屏'大小,而应始终动态地包装视图的内容(View有一些EditText可能从一行到几行,增加{{{}的大小1}})。

我目前采用的方法是使用View将视图的高度(因为它是getPageWidth(),宽度变为高度)设置为VerticalViewPager的一小部分,使用ViewPager测量。测量完毕后,我拨打ViewTreeObserver.OnGlobalLayoutListener()(我也在notifyDataSetChanged()中使用return POSITION_NONE;),以便getItemPosition(Object object)重新填充页面,为分数提供正确的值在ViewPager

然后,每次getPageWidth()获得新行时,我都会调用EditText,这会重复上述过程。

这是一个非常粗略的解决方案,因为用户可以观察正在重建的notifyDataSetChanged(),以及软键盘的开启和关闭。

所以我的问题如下:有没有办法动态更新页面的宽度(在我的情况下是高度),而不重新创建View

1 个答案:

答案 0 :(得分:0)

尝试

ViewPager viewPager; //your viewpager object
viewPager.getLayoutParams().width = DESIRED_NEW_WIDTH; //sets the width of view
viewPager.requestLayout(); //updates view so that change to width takes place

我相信您仍然可以通过ViewPager获取viewPager.getWidth()宽度或将viewPager.getLayoutParams().width存储到变量来确定所需的新宽度。然后确定所需的分数。