[英]Android ViewPager update getPageWidth dynamically without reinflalting page
我使用此库具有一个垂直滚动的ViewPager
。 ViewPager
有两个子项(子项是View
的,而不是Fragment
的):我希望其中一个始终是全屏尺寸,而则应始终动态地包装视图的内容(该View
具有一些EditText
可能从一行增加到几行,从而增加了View
的大小)。
我目前使用的方法是使用getPageWidth()
将getPageWidth()
的高度(因为它是VerticalViewPager
,宽度变为高度)设置为ViewPager
的一部分,而ViewPager
是使用ViewTreeObserver.OnGlobalLayoutListener()
测量的。 一旦进行了测量,我就调用notifyDataSetChanged()
(我也使用getItemPosition(Object object)
return POSITION_NONE;
),以便ViewPager
重新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
存储到变量中来确定所需的新宽度。 然后确定所需分数。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.