【问题标题】:Android ViewPager update getPageWidth dynamically without reinflalting pageAndroid ViewPager 动态更新 getPageWidth 而不重新膨胀页面
【发布时间】:2017-06-22 16:35:00
【问题描述】:

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

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

然后,每次EditText换行时,我调用notifyDataSetChanged(),重复上面的过程。

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

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

【问题讨论】:

    标签: java android android-layout android-viewpager


    【解决方案1】:

    试试

    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 存储到变量来确定所需的新宽度。然后确定所需的分数。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-04-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多