您的问题最简单的解决方案是在您主要(肖像修复的)活动中启动的单独的对话框主题的活动中显示您的EditText.
EditText Activity不应该将其方向固定,因此它会沿着您滑出键盘时的期望旋转.
创建文本输入活动
创建一个新的活动,只包含EditText视图和其他任何你想要包括(可能是/取消按钮,也许一个标签?).在清单中将其主题设置为Theme.Dialog.
android:label="My Activity"
android:theme="@android:style/Theme.Dialog"/>
通过修改前台活动(您的文本输入对话框)的窗口属性来完成对话框后面的活动或模糊活动.在它的onCreate方法中使用getWindow().setFlags将模糊应用于任何背景活动.
getWindow().setFlags(WindowManager.LayoutParams.FLAG_BLUR_BEHIND,
WindowManager.LayoutParams.FLAG_BLUR_BEHIND);
从文本输入活动启动和读取输入的值
使用startActivityForResult启动文本条目Activity.在该Activity中,调用setResult,使用this post中描述的技术返回返回意图中输入的文本字符串.
覆盖onActivityResult方法以侦听子活动的结果.
触发启动键盘暴露
您可以随时启动文本条目活动,但如果要在显示键盘时始终显示它,则可以明确捕获此事件.
首先将android:configChanges属性添加到portrait活动的清单条目.应该注册来监听keyboardHidden.
android:configChanges="keyboardHidden"
在该Activity中,覆盖onConfigurationChanged以启动文本条目Activity.
@Override
public void onConfigurationChanged(Configuration newConfig) {
Intent i = new Intent(this,TextEntryActivity.class);
startActivityForResult(i, STATIC_INTEGER_VALUE);
}
您可能需要检查以确认在启动文本条目Activity之前使用newConfig变量来显示键盘(而不是隐藏).
当隐藏键盘时,您可能还想使用相同的技术自动从文本输入活动返回.