我有一个应用程序,显示大量文本供用户阅读。
我发现躺下时读书时,即使我的头部和屏幕对齐,我仍然对屏幕旋转感到恼火。
我不想将此设置为永久处于纵向模式,因此我认为这将排除设置
的方法 android:screenOrientation="portrait"
清单中的。
理想情况下,我想通过首选项页面启用/禁用自动方向更改。
我最好的方法是什么?
答案 0 :(得分:18)
我会通过让我的首选项页面写入我的应用程序的SharedPreferences,然后读取此值并在加载或显示有问题的文本视图时从代码中调用Activity.setRequestedOrientation()来实现此目的。
例如:
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
if (prefs.getBoolean("fix_orientation_to_portrait", false)) {
this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
} else {
this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR);
}
这可以是onCreate()
或onResume()
方法。不在onCreate()
方法中使用它的唯一原因是,如果在此活动中更改了设置,或者在完成后将返回到此活动的子活动。
修改强>
好吧,如果这不起作用(我不确定会这样),也许你可以尝试使用两个不同的布局xml文件 - 一个设置了screenOrientation,另一个没有。加载活动/视图时,您可以根据保存的首选项动态加载其中一个。 讨厌不干净,但它应该有效。
答案 1 :(得分:1)
在onCreate()函数中添加此行。它正在......
setRequestedOrientation (ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);