方向更改后,自定义视图(swipeView)未正确调整大小

时间:2013-09-26 15:42:06

标签: android swipeview

我在活动的布局中使用SwipeView(http://jasonfry.co.uk/blog/android-swipeview/)来显示多个页面。此外,我想手动处理方向更改,所以我添加了

android:configChanges="orientation|keyboardHidden|screenSize"

进入应用程序的清单,以便不调用onDestroy / onCreate。不幸的是,通过这样做,滑动视图内的元素不会相应地调整大小。我已经尝试了以下方法:

  • 无效
  • requestLayout
  • forceLayout

他们都没有成功! 任何帮助,将不胜感激。 感谢

1 个答案:

答案 0 :(得分:0)

如果有人为此奋斗,我终于找到了解决方案。 诀窍是不要在swipeview本身上请求布局,而是在getChildContainer()上请求布局。

@Override
public void onConfigurationChanged(Configuration newConfig) {
    super.onConfigurationChanged(newConfig);
    SwipeView swipeView = (SwipeView)findViewById(R.id.swipeView);
    int pageWidth = ((WindowManager)getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay().getWidth();
    swipeView.setPageWidth(pageWidth);
    for ( int i = 0; i < swipeView.getChildContainer().getChildCount(); i++ )
        swipeView.getChildContainer().getChildAt(i).getLayoutParams().width = pageWidth;
    swipeView.getChildContainer().requestLayout();
    swipeView.scrollToPage(swipeView.getCurrentPage());     
}