我有一个具有纵向主要布局的应用程序(它固定为纵向),并且有一个地方可以输入文本。我希望像横向方向的弹出窗口一样启动,背景图像模糊不清。我知道有一个弹出窗口小部件,但任何旋转文本编辑框的想法都会很棒。当键盘滑出时将其旋转为纵向视图(仅限文本框)也可以正常工作,就像在键盘滑块上显示带有文本框的新屏幕一样。
答案 0 :(得分:38)
解决您问题的最简单方法是在您的主要(纵向修复)活动中启动的单独EditText
主题活动中显示dialog
。
EditText Activity的方向不应固定,因此当您滑出键盘时,它会按照您的预期旋转。
创建文字输入活动
创建一个新的Activity,它只包含EditText View和你想要包含的任何其他内容(可能是OK / Cancel按钮,也许是标签?)。在清单中将其主题设置为Theme.Dialog
。
<activity android:name="TextEntryActivity"
android:label="My Activity"
android:theme="@android:style/Theme.Dialog"/>
通过修改前景Activity(文本输入对话框)的Window属性来完成对话框后面的活动的模糊或模糊。在其中onCreate方法使用getWindow().setFlags
将模糊应用于任何后台活动。
getWindow().setFlags(WindowManager.LayoutParams.FLAG_BLUR_BEHIND,
WindowManager.LayoutParams.FLAG_BLUR_BEHIND);
从文本输入活动中启动和读取输入的值
使用startActivityForResult
启动文本条目活动。在该活动中调用setResult
以使用this post中描述的技术返回在返回的意图中输入的文本字符串。
重写onActivityResult
方法以侦听子活动的结果。
触发键盘曝光启动
您可以随时启动文本条目“活动”,但如果您希望在键盘公开时始终显示它,则可以明确地捕获此事件。
首先将android:configChanges
属性添加到纵向活动的清单条目中。应注册以收听keyboardHidden
。
android:configChanges="keyboardHidden"
在该活动中,覆盖onConfigurationChanged
以启动文本条目活动。
@Override
public void onConfigurationChanged(Configuration newConfig) {
Intent i = new Intent(this,TextEntryActivity.class);
startActivityForResult(i, STATIC_INTEGER_VALUE);
}
在启动文本条目Activity之前,您可能需要使用newConfig变量检查确认键盘是否正在暴露(而不是隐藏)。
您可能还想使用相同的技术在隐藏键盘时自动从文本输入活动返回。