[英]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.