Пользовательский вид (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());
}