2017-02-16 69 views
0

我有一个android布局 - main.axml,它根据方向进行更改。我已经覆盖OnConfigurationChanged,以便可以根据其他条件调整某些图标(位于此布局之外)的外观。我必须设置为方向和屏幕尺寸的配置变化,这是我的方法:配置更改ScreenSize和方向停止布局更改

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模式的按钮,然后释放按钮默认情况下,在你ActivityonCreate可见,通过检测取向 - getResources().getConfiguration().orientation如果方向是landscape然后只需切换它。

虽然OnConfigurationChanged方法真的很方便,但避免在其中放入大量的逻辑。尝试上述方法

+0

我可以做到这一点,在onCreate,问题是,按钮的可见性状态(在你的例子中)取决于一个整数(反映了导航抽屉选定的位置),它被重置为 - 1当我旋转屏幕(我不知道这是为什么) –

+0

我的重写的OnSavedInstanceState是错误的,现在纠正,所有的工作。谢谢 –

+0

太好了。这应该是我的下一个评论。 'onSavedInstance'来保存你的UI状态。 – Dibzmania