在WebView中点击表单字段不显示软键盘

Sha*_*zon 56 android webview

我创建了自己的WebView并设置了WebChromeClient和WebViewClient对象.当我启动此WebView时,HTML表单字段在我触摸它们时会产生反应(光标出现),但它们不会被选中,软键盘也不会启动.如果我使用轨迹球选择表格并按下它,键盘就会出现.

我试着打电话给myWebview.requestFocusFromTouch()这个答案建议,但它返回false,并没有帮助.

小智 96

http://code.google.com/p/android/issues/detail?id=7189

这是一个修复,以防其他不清楚.

webview.requestFocus(View.FOCUS_DOWN);
    webview.setOnTouchListener(new View.OnTouchListener() {
        @Override
        public boolean onTouch(View v, MotionEvent event) {
            switch (event.getAction()) {
                case MotionEvent.ACTION_DOWN:
                case MotionEvent.ACTION_UP:
                    if (!v.hasFocus()) {
                        v.requestFocus();
                    }
                    break;
            }
            return false;
        }
    });
Run Code Online (Sandbox Code Playgroud)


Ste*_*eve 28

与Dv_MH的回答达成10%的协议.然而,附属课程有点过分.我需要做的就是扩展WebView并为onCheckIsTextEditor()返回true

import android.content.Context;
import android.util.AttributeSet;
import android.webkit.WebView;

public class LiveWebView extends WebView {

    public LiveWebView(Context context) {
        super(context);
    }

    public LiveWebView(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    public LiveWebView(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
    }

    @Override
    public boolean onCheckIsTextEditor() {
        return true;
    }
}
Run Code Online (Sandbox Code Playgroud)

从那里,我能够将它用作普通的WebView(甚至在Dialogs中).

或者,使用更少的代码:

WebView web = new WebView(context) {
  @Override
  public boolean onCheckIsTextEditor() {
    return true;
  }
};
Run Code Online (Sandbox Code Playgroud)


小智 7

重要 我花了几个小时搜索这个,我通过确保扩展"ViewGroup"的父布局没有属性来解决它

android:descendantFocusability ="blocksDescendants"阻止子布局聚焦

或者 将web:focusable ="true"添加到webview