Изменение размера содержимого в HorizontalScrollView при повороте телефона путем переопределения onConfigurationChanged - PullRequest
0 голосов
/ 16 мая 2010

Здравствуйте, Андройдеры ...

У меня проблема с изменением размера содержимого в HorizontalScrollView при повороте телефона. Я переопределяю onConfigurationChanged в своей деятельности, содержащей HorizontalScrollView, так как я хочу самостоятельно обрабатывать изменение размера. Тем не менее, у меня возникла большая проблема с поиском, где я должен поместить изменение размера контента. Горизонтальный вид ScrollView имеет FILL_PARENT как ширину и фиксированную высоту. Идея состоит в том, что он всегда должен заполнять экран по ширине, имея несколько ячеек контента, каждая из которых равна ширине самого HorizontalScrollView.

Контент в моем HorizontalScrollView состоит из одного LinearLayout (назовем это wrapperLayout) с несколькими LinearLayout внутри. Когда телефон вращается, я просто хочу изменить ширину всех LinearLayouts внутри wrapperLayout. Это легко сделать и прекрасно работает, когда я тестирую код изменения размера, помещая его в onInterceptTouchEvent (MotionEvent ev), то есть размеры представления изменяются так, как и должно быть, когда я касаюсь HorizontalScrollView.

Сложность возникает, когда я пытаюсь найти подходящее место для выполнения кода изменения размера, чтобы изменение размера происходило автоматически при повороте телефона. Я перепробовал все возможные комбинации requestLayout, onSizeChanged, onLayout, onConfigurationChanged и некоторых других и варьировал их вызовы super (если есть) до и после кода изменения размера. Я не могу заставить эту работу (представления не изменяются, даже если выполняется код изменения размера), и это действительно расстраивает. Я сделал много записей, чтобы убедиться, что HorizonalScrollView действительно изменил ширину перед вызовом моего кода изменения размера, но безрезультатно.

Кто-нибудь знает, что происходит? Какие методы вызываются и в каком порядке, когда я сам так обращаюсь с onConfigurationChanged?

Заранее спасибо

1 Ответ

0 голосов
/ 16 мая 2010

Существует ли причина, по которой вы не используете ориентационные вызовы viewcontroller. т.е.

// Override to allow orientations other than the default portrait orientation.

- (BOOL) shouldAutorotateToInterfaceOrientation: (UIInterfaceOrientation) interfaceOrientation {

Я думаю, что это может быть проще.

...