Android在纵向模式下使用错误的布局文件

时间:2013-12-13 21:27:04

标签: android android-layout

我们的应用根据屏幕尺寸强制纵向或横向模式。布局目录中的布局用于默认的横向方向。我们在layout-port中有适当的替代方案。在启动时,应用程序会查看屏幕大小,然后设置适当的方向。例如,要强制纵向模式,我们称之为:

        setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR_PORTRAIT);

对于一个片段,我们有一个特殊的纵向模式布局,它位于layout-port中。

如果设备(平板电脑)当前处于横向位置,则会选择布局目录中的默认布局。这似乎与应该发生的事情相反。

当我们强制使用纵向模式时,我们是否可以确保使用layout-port目录中的xml文件?

3 个答案:

答案 0 :(得分:1)

你只是使用了错误的标志,所以它并没有真正强制使用肖像模式。 From the docsSCREEN_ORIENTATION_SENSOR_PORTRAIT

  

希望屏幕处于纵向,但可以使用传感器更改屏幕朝向的方向。

如果您想强制肖像,请使用SCREEN_ORIENTATION_PORTRAIT

  

希望屏幕处于纵向:即显示屏高于宽屏,忽略传感器数据。

答案 1 :(得分:0)

我认为在纵向方向更改生效之前检查值时会出现问题,因为方向是在代码中定义的,类似这样的

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);

代码中之前的任何内容都不会知道更改。我注意到调用setRequestOrientation会导致布局重绘,所以你应该等到重绘完成后再检查值。

我注意到了这一点,因为我遇到了类似的问题,并观察到在纵向布局之前绘制了横向布局。横向布局不包含纵向布局的所有元素,因此它触发了空指针异常。但是,如果我等到肖像重绘完成,然后检查 - 值是正确的肖像。这可以在onResume回调中安全地完成。希望这会有所帮助。

答案 2 :(得分:-1)

据我所知,肖像模式是默认的。您应该将您的纵向布局放在'layout'文件夹中,并将您的横向布局放在'layout-land'文件夹中