Пользовательский вид (swipeView) не изменяет размеры должным образом после изменения ориентации

Я использую SwipeView ( http://jasonfry.co.uk/blog/android-swipeview/) внутри макета своей деятельности для отображения нескольких страниц. Кроме того, я хочу обрабатывать изменения ориентации вручную, поэтому я добавил

android:configChanges="orientation|keyboardHidden|screenSize"

в манифест приложения, так что onDestroy / onCreate не вызываются. К сожалению, при этом элементы внутри свайп-листа соответственно не меняются. Я уже попробовал следующие методы:

  • аннулировать
  • requestLayout
  • forceLayout

Никто из них не сделал этого! Любая помощь будет оценена. Спасибо

1 ответ

Решение

В случае, если кто-то борется с этим, я, наконец, нашел решение. Хитрость была в том, чтобы запросить компоновку не на самом 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());     
}
Другие вопросы по тегам