12

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

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

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

 android:screenOrientation="portrait"

在清单中。

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

我最好的方法是什么?

4

2 回答 2

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()oronResume()方法中。没有在onCreate()方法中使用它的唯一原因是,如果设置的更改发生在此活动中,或者发生在完成后将返回到该活动的子活动上。

编辑:

好的,如果这不起作用(我不确定它是否会起作用),也许您可​​以尝试使用两个不同的布局 xml 文件 - 一个设置了 screenOrientation,另一个没有。当您加载 Activity/View 时,您可以根据您保存的首选项动态加载一个或另一个。这很讨厌,不干净,但它应该可以工作。

于 2010-08-05T21:26:55.653 回答
2

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

setRequestedOrientation (ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
于 2015-08-13T09:51:00.387 回答