通过编程方式在后台使用带有GL视图的软键盘创建EditText

时间:2014-12-17 23:34:09

标签: android android-layout android-edittext relativelayout glsurfaceview

我正在制作游戏,当弹出时,我想在软键盘上方有一个EditText位置。

以下是我在主要活动中构建视图层次结构时的代码:

getWindow().addFlags(WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN | WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS);

viewGroup = new RelativeLayout(this);
    viewGroup.setLayoutParams(new ViewGroup.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT));
    view = new GameView(this);
        RelativeLayout.LayoutParams vLayoutParams = new RelativeLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT);
        vLayoutParams.addRule(RelativeLayout.ALIGN_PARENT_TOP);
        view.setLayoutParams(vLayoutParams);
        viewGroup.addView(view);

    editText = new GameEditText(this);
        RelativeLayout.LayoutParams etLayoutParams = new RelativeLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT);
        etLayoutParams.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM);
        editText.setGravity(Gravity.BOTTOM);
        editText.setLayoutParams(etLayoutParams);
    viewGroup.addView(editText);

setContentView(viewGroup);  

这是我的AndroidManifest.xml(重要的部分):

<activity 
    android:name="app.ember.MainActivity"
    android:theme="@android:style/Theme.NoTitleBar.Fullscreen"
    android:launchMode="singleTask"
    android:configChanges="orientation|keyboardHidden|screenSize"
    android:screenOrientation="sensorLandscape"
    android:windowSoftInputMode="adjustResize"
    >
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
</activity>

额外信息:

  • GameView =是GLSurfaceView
  • GameEditText =是一个EditText
  • 如果我注释掉第一行(getWindow()。addFlags ...)那么游戏视图向上平移并且视图不可见,除非我开始输入内容。
  • 离开第一行会使游戏不能平移,但不会向上移动editText字段而键盘会覆盖editText字段

有什么建议吗?

以下是一些精彩的截图:

游戏无键盘:

Game With No Keyboard

游戏使用键盘和WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN | WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS设置(显示器中显示图层层次结构的样子):

Keyboard with monitor

游戏键盘和那些标志未设置。 enter image description here

这是所需的输出: Desired Output

2 个答案:

答案 0 :(得分:-1)

Editbox作为父母的底部。

android:layout_alignParentBottom="true"

并在清单文件中进行软输入adjustResize/Pan

android:windowSoftInputMode="adjustResize"

“adjustResize”:活动的主窗口始终调整大小,以便为屏幕上的软键盘腾出空间。

“adjustPan”:活动的主窗口未调整大小以便为软键盘腾出空间。相反,窗口的内容会自动平移,以便键盘不会遮挡当前焦点,用户可以随时看到他们正在键入的内容。这通常不如调整大小,因为用户可能需要关闭软键盘才能进入并与窗口的模糊部分进行交互。

检查this了解更多

答案 1 :(得分:-1)

在清单添加

机器人:windowSoftInputMode =&#34; adjustPan&#34;

它会自动调整您的编辑文字下面的键盘