【问题标题】:How to show an text editing box "over" the screen?如何在屏幕“上方”显示文本编辑框?
【发布时间】:2010-10-02 09:42:20
【问题描述】:

我有一个应用程序,其主要布局为纵向(固定为纵向),并且有一个地方可以输入文本。我想像一个横向的弹出窗口一样启动,背景图像模糊不清。我知道有一个弹出窗口小部件,但任何旋转文本编辑框的想法都会很棒。在滑出键盘时将其旋转到纵向视图(仅限文本框)也可以,就像在键盘滑动上显示带有文本框的新屏幕一样。

【问题讨论】:

    标签: android text popup android-edittext


    【解决方案1】:

    解决您的问题的最简单方法是在一个单独的 dialog 主题 Activity 中显示您的 EditText,该 Activity 从您的主(纵向固定)Activity 中启动。

    EditText Activity 的方向不应固定,因此当您滑出键盘时它会按预期旋转。

    创建文本输入活动

    创建一个新的 Activity,它只包含 EditText 视图和您想要包含的任何其他内容(可能是 OK / Cancel 按钮,也可能是一个标签?)。在清单中将其主题设置为Theme.Dialog

    <activity android:name="TextEntryActivity" 
              android:label="My Activity" 
              android:theme="@android:style/Theme.Dialog"/>
    

    通过修改前台 Activity(您的文本输入对话框)的 Window 属性来对对话框后面的 Activity 进行模糊或模糊处理。在它的 onCreate 方法中,使用 getWindow().setFlags 将模糊应用于任何背景活动。

    getWindow().setFlags(WindowManager.LayoutParams.FLAG_BLUR_BEHIND,  
                         WindowManager.LayoutParams.FLAG_BLUR_BEHIND);
    

    从文本输入活动中启动和读取输入的值

    使用startActivityForResult 启动文本输入活动。在该 Activity 中调用 setResult 以使用 this post 中描述的技术返回在返回的 Intent 中输入的文本字符串。

    重写onActivityResult 方法以监听来自子Activity 的结果。

    在暴露的键盘上触发启动

    您可以随时启动文本输入活动,但如果您希望在键盘暴露时始终显示它,您可以显式捕获此事件。

    首先将android:configChanges 属性添加到肖像活动的清单条目中。它应该注册为监听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 变量检查确认键盘是否暴露(而不是隐藏)。

    您可能还想使用相同的技术在键盘隐藏时自动从文本输入活动返回。

    【讨论】:

      猜你喜欢
      • 2018-04-17
      • 1970-01-01
      • 1970-01-01
      • 2011-01-09
      • 2017-10-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多