软键盘在WebView DialogFragment中不显示触摸

chR*_*NaN 2 java android touch-event android-webview android-dialogfragment

编辑:我已经查看了错误页面 ; 没有答案工作.它似乎是一个Android尚未解决的系统错误.

首先我提到了这个类似的问题.但是这个问题的解决方案似乎并不是我的解决方案.我有一个DialogFragment只包含一个WebView.这里的一切WebView似乎都是可以触摸的.但问题是,当我触摸表单域时,会出现光标但软键盘从不出现!

这是我在类中的onCreateDialog()方法中的代码DialogFragment:

    AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
    WebView web = new WebView(getActivity());
    web.loadUrl(InternetDialog.this.url);
    web.setFocusable(true);
    web.setFocusableInTouchMode(true);
    web.requestFocus(View.FOCUS_DOWN);
    web.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;
        }
    });

    builder.setView(web);
    return builder.create();
Run Code Online (Sandbox Code Playgroud)

当我选择表单字段时,如何才能显示软键盘?

chR*_*NaN 11

这是一个尚未修复的系统错误.更多信息可以在这里找到.似乎这个错误对人来说不同,因此有不同的解决方案.对于我的特殊情况,只有一个解决方案(因为我已经尝试了其他一切).解:

首先,我为以下内容创建了一个布局Dialog:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

<EditText
    android:id="@+id/edit"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:focusable="true"
    android:visibility="invisible"/>

<WebView
    android:id="@+id/web"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"/>

</RelativeLayout>
Run Code Online (Sandbox Code Playgroud)

然后,在方法的DialogFragment类中onCreateDialog:

    AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
    LayoutInflater inflater = LayoutInflater.from(getActivity());
    View v = inflater.inflate(R.layout.internet_dialog, null);

    WebView web = (WebView) v.findViewById(R.id.web);
    EditText edit = (EditText) v.findViewById(R.id.edit);
    edit.setFocusable(true);
    edit.requestFocus();
    web.loadUrl(url);
    this.webView = web;
    builder.setView(v);

    return builder.create();
Run Code Online (Sandbox Code Playgroud)

这就是它的全部内容.这个工作的原因是因为我做了一个EditText我把重点放在了隐形的地方.由于它EditText是不可见的,它不会干扰WebView它,因为它有焦点,它可以适当地拉动软键盘.我希望这有助于陷入类似情况.

  • 在 2021 年的 SDK 30 上,这仍然是一个错误,并且仍然是解决方法。 (2认同)