1

我的活动中有一个 OpenGL SurfaceView,我正在使用键盘输入一些文本(通过网络发送)。没有 EditText 存在,所以我强制使用以下命令显示键盘:

    InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); 
    imm.toggleSoftInput(InputMethodManager.SHOW_FORCED, InputMethodManager.HIDE_IMPLICIT_ONLY);

该活动已定义属性android:windowSoftInputMode="adjustResize",这在纵向模式下效果很好,当显示键盘时,布局正在调整大小(因此也调整了表面视图)。但是,它不会在横向模式下发生,这使得表面视图的一部分(实际上是大部分)变得模糊。surfaceview 实现了平移和缩放,所以如果我至少可以知道正在显示的键盘的大小并相应地重新定位surfaceview,那就太好了。

有没有办法让软键盘在横向模式下的行为与在纵向模式下的行为相同(这意味着它将调整我的布局大小)?如果没有,有没有办法获得键盘的高度(显然是全屏)?

4

1 回答 1

1

在 newsgorup 的帮助下,我能够通过对视图 ( )android-developers使用覆盖来解决这个问题。onCreateInputConnection请参阅原始线程

@Override
public InputConnection onCreateInputConnection(EditorInfo outAttrs) {
  InputConnection connection = super.onCreateInputConnection(outAttrs);
  outAttrs.imeOptions |= EditorInfo.IME_FLAG_NO_FULLSCREEN;
  return connection;
}
于 2012-06-09T12:49:32.920 回答