我使用this library来ViewPager
垂直滚动。 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
?
答案 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
存储到变量来确定所需的新宽度。然后确定所需的分数。