我使用这个库来拥有一个垂直滚动的ViewPager
。ViewPager
有两个子级(子级是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
存储到变量来确定所需的新宽度。然后确定所需的分数。