我在我的Android应用程序中实现了自定义webview。如果我触摸此webview中的输入或文本区域,则软键盘不会显示。我没有在我的webview中覆盖任何touchlisteners,也没有在我的清单中更改任何内容。任何人都可以帮我弄清楚键盘没有显示的原因吗?
我的布局代码:
<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>
答案 0 :(得分:15)
请尝试将这些行添加到XML文件中的webview中。
android:focusable="true"
android:focusableInTouchMode="true"
希望它有所帮助。
答案 1 :(得分:1)
就我而言,除了添加
android:focusable="true"
android:focusableInTouchMode="true"
我还需要继承WebView并添加此方法
@Override
public boolean onCheckIsTextEditor() {
return true;
}
我从this thread获得了解决方案,其中提出了许多其他解决方案。
这是整个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;
}
}
答案 2 :(得分:0)
setFocusable(true)
setFocusableInTouchMode(true)