0

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

android:configChanges="orientation|keyboardHidden|screenSize"

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

  • 无效
  • 请求布局
  • 强制布局

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

4

1 回答 1

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());     
}
于 2013-10-18T13:20:55.740 回答