2017-02-16 8 views
0

У меня есть android layout - main.axml, который изменяется в зависимости от ориентации. Я переопределил OnConfigurationChanged, так что я могу настроить способ отображения некоторых значков (которые находятся за пределами этого макета) на основе других критериев. У меня есть изменения конфигурации, установленные для ориентации и размером экрана, а вот мой метод:Конфигурация изменений Изменение размера экрана и ориентации Ориентация

public override void OnConfigurationChanged(Configuration newConfig) 
     { 
      base.OnConfigurationChanged(newConfig); 
      toggle.OnConfigurationChanged(newConfig); 
      animateDrawerIcon(); 
      FabController(); 
     } 

Проблема заключается в том, раскладке больше не меняется, он остается тем же, независимо от ориентации, если я ставлю SetContentView (ResourceLayout) в методе выше, макет изменяется, но полностью пуст.

Я действительно хочу, чтобы Android обрабатывал изменение вращения/экрана, я просто хочу назвать две функции, когда это произойдет - может ли кто-нибудь посоветовать, как лучше всего это сделать?

+0

Возможно, попробуйте добавить super.onConfigurationChanged (newConfig) ;? –

+0

Это в Xamarin, base.OnConfigurationChanged (newConfig); это то же самое, что вы говорите –

ответ

0

Если вы хотите, чтобы Android это сделал, то самым простым способом является определение двух макетов для двух ориентации. Это идеально, если макет в пейзаже сильно отличается от того, что он смотрит в портретном режиме.

Но если это несколько бит здесь и там, вы должны определить текущую ориентацию устройства и переключить кнопки и переключатели (или то, что вы хотите делать !!!) в свой метод onCreate. В этом случае вам не нужно определять несколько макетов.

For.eg, если у вас есть кнопка которую вы хотите быть только в режиме portrat, то пусть кнопка будет видна по умолчанию, и в onCreate из ваших Activity, обнаружить ориентацию, - getResources().getConfiguration().orientation и если ориентация landscape то просто переключите его.

Метод OnConfigurationChanged действительно удобен, избегайте вкладывать в него много логики. Попробуйте любой из подходов, упомянутых выше

+0

Я могу это сделать, в onCreate, проблема в том, что состояние видимости кнопок (в вашем примере) зависит от целого (отражает выбранную позицию навигационного ящика), которая сбрасывается на - 1, когда я поворачиваю экран (я не знаю, почему это так) –

+0

Мое переопределение OnSavedInstanceState было неправильным, исправлено сейчас, все работает. Спасибо –

+0

Отлично. Это должно было быть моим следующим комментарием. 'onSavedInstance' для сохранения вашего пользовательского интерфейса. – Dibzmania

 Смежные вопросы

  • Нет связанных вопросов^_^