我有一个应用程序,它显示大量文本供用户阅读。

我发现,当躺着阅读时,即使我的头和屏幕对齐,屏幕也会旋转,这让我很恼火。

我不想将其设置为永久处于纵向模式,因此我认为这会排除设置

 android:screenOrientation="portrait"

在清单中。

理想情况下,我想通过首选项页面启用/禁用自动方向更改。

我最好的方法是什么?

有帮助吗?

解决方案

我将通过将我的首选项页面写入 共享首选项 对于我的应用程序,然后读取该值并调用 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,另一个没有设置。当您加载活动/视图时,您可以根据保存的首选项动态加载其中之一。它是 可恶的 不干净,但应该可以。

其他提示

在 onCreate() 函数中添加此行。这是工作 ...

setRequestedOrientation (ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top