我在我的活动中使用自定义对话框。我想仅在对话框显示在其他地方时才设置屏幕方向,屏幕方向可以更改为纵向到横向,反之亦然。有没有办法在java代码中专门修复这种特定情况的方向。
答案 0 :(得分:3)
我们必须在从服务启动的全屏对话框中执行此操作。
final WindowManager.LayoutParams params = new WindowManager.LayoutParams(WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN);
params.copyFrom(window.getAttributes());
params.width = WindowManager.LayoutParams.MATCH_PARENT;
params.height = WindowManager.LayoutParams.MATCH_PARENT;
params.screenOrientation = ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE;
window.setAttributes(params);
答案 1 :(得分:2)
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
//Show dialog here
//...
//Hide dialog here
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR);
答案 2 :(得分:0)
使用android:configChanges="orientation"
,然后Android在更改方向时不会重新创建活动。如果您不希望解除对话框,请使用Activity.showDialog()
方法。如果您仍想使用android:configChanges="orientation"
,则必须在Activity.onConfigurationChanged()
方法中手动更改drawable。