繁体   English   中英

Android ViewPager动态更新getPageWidth而不重新整理页面

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM