小编Dan*_*iya的帖子

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

我正在开发一款游戏,当它弹出时我希望在软键盘上方有一个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);  
Run Code Online (Sandbox Code Playgroud)

这是我的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>
Run Code Online (Sandbox Code Playgroud)

额外的信息:

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

有什么建议?

这是一些花哨的截图:

游戏没有键盘:

没有键盘的游戏

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

键盘与显示器

游戏键盘和那些标志没有设置. 在此输入图像描述

这是所需的输出: 期望的输出

android relativelayout glsurfaceview android-layout android-edittext

8
推荐指数
1
解决办法
659
查看次数