问题描述
我有一个android布局-main.axml,它会根据方向进行更改。 我已经覆盖了OnConfigurationChanged,以便可以根据其他条件调整某些图标(位于此布局之外)的外观。 我将配置更改设置为“方向”和“屏幕尺寸”,这是我的方法:
public override void OnConfigurationChanged(Configuration newConfig)
{
base.OnConfigurationChanged(newConfig);
toggle.OnConfigurationChanged(newConfig);
animateDrawerIcon();
FabController();
}
问题是,布局不再更改,无论方向如何它都保持不变,如果我将SetContentView(ResourceLayout)放在上述方法中,则布局会更改,但完全为空。
我真的希望Android处理旋转/屏幕大小的更改,我只想在发生这种情况时调用两个函数-有人可以建议如何最好地做到这一点吗?
1楼
如果您想让Android做到这一点,那么最简单的方法就是为两个方向定义两个布局。 如果横向布局与纵向模式下的布局有很大不同,这是理想的选择。
但是,如果到处都是几分,那么您应该检测设备的当前方向,并在onCreate方法中切换按钮和开关(或任何您想做的!!!)。
在这种情况下,您无需定义多个布局。
例如,如果您有一个仅希望在portrat模式下使用的按钮,则默认情况下让该按钮可见,并在Activity onCreate中,通过getResources().getConfiguration().orientation ,如果方向是landscape然后切换即可。
尽管OnConfigurationChanged方法确实很方便,但请避免在其中添加很多逻辑。
尝试上述任何一种方法