调用onResume后,Android软键盘显示怪异

时间:2017-08-02 09:24:08

标签: android keyboard android-softkeyboard onresume soft-keyboard

我有一个EditText,我通过下面的代码手动控制显示键盘:

private void showKeyboard(boolean show) {
    InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
    if (show) {
        mAddNewEditText.requestFocus();
        imm.showSoftInput(mAddNewEditText, 0);
    } else {
        mAddNewEditText.clearFocus();
        imm.hideSoftInputFromWindow(mAddNewEditText.getWindowToken(), 0);
    }
}

Opened the keyboad

我会调用隐式意图获取新图像,当它返回活动时,它不会显示软键盘。所以我试着将键盘onResume函数显示如下:

@Override
protected void onResume() {
    super.onResume();
    if (mAddNewEditText.isFocused()) {
        mAddNewEditText.post(
                () -> showKeyboard(true)
        );
    }
}

但它显示的键盘与通常显示键盘不同:

soft keyboard shows weirdly

我想知道这里有什么问题。是因为我使用post方法吗?没有帖子我无法显示键盘!

我尝试了什么:

  • 我尝试使用没有显示键盘的帖子。
  • 我试图调用imm.showSoftInput(txtPassword,0);结果相同。
  • 我尝试了mAddNewEditText.postDelayed方法,结果与100相同。
  • 我尝试将Men:windowSoftInputMode =“stateVisible”放在Menifest上,结果相同。

注意:我正在使用Android模拟器。

3 个答案:

答案 0 :(得分:1)

将此行放入您的清单内部活动

        meta = ["{\
                \"output_metadata\": {\
                    \"api_URL\": apiURL,\
                    \"query_execution_time\": queryExecTime,\
                    \"api_execution_time\": apiExecTime,    \
                }\
            }"]    

        data = ["{\"data\": {\"id\": \"1234\", \"name\": \"jhon\", \"dept\": \"APA\"}]}"]

        meta.append(data)

答案 1 :(得分:1)

也许你可以试试postDelayed(),延迟500毫秒或更长时间。完成UI后确保显示键盘。

答案 2 :(得分:1)

好的,我找到了答案: 在我的styles.xml中,我有这段代码:

<item name="android:windowFullscreen">true</item>

引起了这个问题,不确定原因。