我可以只在特定条件下允许android活动更改为横向吗?

我可以只在特定条件下允许android活动更改为横向吗?,android,conditional,rotation,Android,Conditional,Rotation,我的大多数应用程序在横向上看起来都不太好,但如果要在“宽”屏幕上看到应用程序,就我而言,这是用户的选择。 但是,我有一个自动完成屏幕,该屏幕无法在横向模式下运行,因为当用户输入文本,我将结果带入屏幕上的列表视图时,用户无法看到列表视图,因为虚拟键盘覆盖了所有内容。 所以我想在清单中定义这个活动不会在横向模式下使用,但我可以在横向模式下使用它,用于具有打开的硬件键盘的设备 因此,要么我可以在清单中定义它(找不到如何定义),要么我需要戏剧性地进行定义(发现键盘存在并打开以支持它,或者禁用旋转) 有人

我的大多数应用程序在横向上看起来都不太好,但如果要在“宽”屏幕上看到应用程序,就我而言,这是用户的选择。 但是,我有一个自动完成屏幕,该屏幕无法在横向模式下运行,因为当用户输入文本,我将结果带入屏幕上的列表视图时,用户无法看到列表视图,因为虚拟键盘覆盖了所有内容。 所以我想在清单中定义这个活动不会在横向模式下使用,但我可以在横向模式下使用它,用于具有打开的硬件键盘的设备

因此,要么我可以在清单中定义它(找不到如何定义),要么我需要戏剧性地进行定义(发现键盘存在并打开以支持它,或者禁用旋转)

有人知道怎么做吗?:

你可以试试

setRequestedOrientation(ActivityInfo.SCREEN\u ORIENTATION\u Picture)

活动android:name=“.SomeActivity” android:screenOrientation=“肖像”


这些可能会对您有所帮助。

您还可以拦截这些配置更改:

<activity ...
    android:configChanges="orientation|keyboardHidden">
</activity>


onConfigurationChanged()
中,您可以决定如何处理它们。

这只会让我自己处理方向,我并不想这样做,此外,它不允许我选择是否更改方向,它只是让我知道方向已发生更改。但是,如果您只想在键盘存在且不存在时更改方向,则必须使用它。如果在它里面你什么都不做(比如说方向改变了,但是没有键盘),改变就会被忽略。