Android ViewPager 动态更新 getPageWidth,无需重新加载页面



我使用这个库来拥有一个垂直滚动的ViewPagerViewPager有两个子级(子级是View的,而不是Fragment的):我希望其中一个始终是全屏的大小,而 应该始终动态包装视图的内容(View有一些EditText,可能从一行到几行,增加View的大小)。

我目前采用的方法是使用getPageWidth()将视图的高度(因为它是VerticalViewPager,宽度变为高度)设置为ViewPager的一小部分,这是使用ViewTreeObserver.OnGlobalLayoutListener()测量的。测量后,我调用notifyDataSetChanged()(我也在getItemPosition(Object object)中使用return POSITION_NONE;),以便ViewPager重新膨胀页面,在getPageWidth()中具有正确的分数值。

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

这是一个非常粗略的解决方案,因为用户可以观察到正在重新创建View,以及软键盘的断断续续。

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

尝试

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.getWidth()ViewPager宽度或将viewPager.getLayoutParams().width存储到变量来确定所需的新宽度。然后确定所需的分数。

最新更新