Ответ 1
Я бы сделал это, указав мою страницу предпочтений на 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()
заключается в том, что изменение этого параметра происходит в этой активности или в дочерней активности, которая вернется к этому, когда это будет сделано.
Edit:
ОК, если это не сработает (и я не уверен, что это будет), возможно, вы можете попробовать иметь два разных XML файла раскладки - один с набором screenOrientation, а другой без него. Когда вы загружаете свой Activity/View, вы можете динамически загружать тот или иной на основе сохраненных настроек. Он противный не чист, но он должен работать.