软键盘在启动webview后仍然保持弹出状态

3
我有一个app,需要使用某些凭据登录到web应用程序。登录后会启动webview。
问题来了。
在模拟器上(Nexus_S_Google和带API 21的Nexus 5)以及三星平板电脑上,当webview出现时,键盘会消失。这是期望的行为。但是,在两部不同的手机上(三星5S和三星Galaxy Note 5),键盘并没有消失。这是因为手机的工作方式不同吗?还是有一种方法可以调用此行为?我不明白为什么它在平板电脑和模拟器上运行正常但在手机上不行。
以下是我的尝试。
在清单文件中。
android:windowSoftInputMode="adjustPan">

在活动XML中
android:focusable="true"
android:focusableInTouchMode="true"/>

在MainActivity中,当WebView获取到URL之后。
webView.requestFocus();

你想让键盘在关闭webview之前保持隐藏,还是只是不希望键盘在进入webview后继续存在?并且你请求webview焦点的原因是什么?通常请求焦点会导致键盘弹出。 - Noel Bautista
DERPA_CHIEF - 谢谢您的回复。我希望当Webview出现时,键盘会下降,但是如果用户决定在Web应用程序中编辑某些内容,则键盘应弹回。我认为Webview将处理这部分。基本上,一旦Webview启动,键盘就应该消失。我确实删除了Webview的焦点,但行为没有改变。我尝试的每件事都对行为没有影响。 - Jay
当您删除webView.requestFocus()和布局xml中的可聚焦内容时会发生什么? - Noel Bautista
我应该在清单文件中删除这一行吗 - android:windowSoftInputMode="adjustPan"> - Jay
由你决定。我相信它的作用是在键盘弹出时平移您的Web视图。 - Noel Bautista
显示剩余2条评论
1个回答

0

好的,经过多次尝试,我终于解决了这个问题。

创建了一个方法。

private void fKeyboardClose()
    {
        InputMethodManager inputMethodManager = (InputMethodManager)getSystemService( Activity.INPUT_METHOD_SERVICE);
        inputMethodManager.hideSoftInputFromWindow( this.getCurrentFocus().getWindowToken(), 0);
    }

然后我在点击提交按钮的onClick之后立即调用它。
submit.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                fKeyboardClose();

                textstring(phone, login, pass);
                prefwrite(editor);
                pushurl();
                clear(phone, login, pass);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接