繁体   English   中英

在 webview 中单击输入时不显示 Android 键盘

[英]Android keyboard not showing when clicking on input in webview

我在我的 android 应用程序中实现了一个自定义 webview。 如果我触摸此 web 视图中的输入或文本区域,则不会显示软键盘。 我没有覆盖我的网络视图中的任何触摸监听器,也没有更改我的清单中的任何内容。 谁能帮我弄清楚为什么键盘不显示?

我的布局代码:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <android.support.v4.widget.SwipeRefreshLayout
        android:id="@+id/swipeRefreshLayout"
        android:layout_width="match_parent"
        android:layout_height="match_parent">

        <nl.AEGEE.enschede.android.AEGEEWebView
            android:id="@+id/webView"
            android:layout_width="match_parent"
            android:layout_height="match_parent" />

    </android.support.v4.widget.SwipeRefreshLayout>

    <ProgressBar
        android:id="@+id/progressBar"
        style="?android:attr/progressBarStyleHorizontal"
        android:progressTint="@color/aegee_blue"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="-6dp"
        android:layout_alignParentTop="true" />

</RelativeLayout>

请尝试将这些行添加到 XML 文件中的 webview。

android:focusable="true"
android:focusableInTouchMode="true"

希望能帮助到你。

就我而言,除了添加

android:focusable="true"
android:focusableInTouchMode="true"

我还需要继承 WebView 并添加此方法

@Override
public boolean onCheckIsTextEditor() {
    return true;
}

我从这个线程中得到了解决方案,其中提出了许多其他解决方案。

这是整个WebView的子类,如果有人要用的话

public class CustomWebView extends WebView {
    public CustomWebView(Context context) {
        super(context);

        init();
    }

    public CustomWebView(Context context, AttributeSet attrs) {
        super(context, attrs);

        init();
    }

    public CustomWebView(Context context, AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);

        init();
    }

    protected void init() {
        setFocusable(true);
        setFocusableInTouchMode(true);
    }

    @Override
    public InputConnection onCreateInputConnection(EditorInfo outAttrs) {
        BaseInputConnection baseInputConnection = new BaseInputConnection(this, false);
        outAttrs.imeOptions = IME_ACTION_DONE;
        outAttrs.inputType = TYPE_CLASS_TEXT;
        return baseInputConnection;
    }

    @Override
    public boolean onCheckIsTextEditor() {
        return true;
    }
}
setFocusable(true)
setFocusableInTouchMode(true)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM