修改:我查看了错误page for this;没有答案工作。它似乎是一个尚未解决的Android
系统错误。
首先我提到this similar question.但是这个问题的解决方案似乎不是我的解决方案。我的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();
如何在选择表单字段时显示软键盘?
答案 0 :(得分:11)
这是一个尚未修复的系统错误。 More information can be found here.似乎这个错误对人来说不同,因此有不同的解决方案。对于我的特殊情况,只有一个解决方案(因为我已经尝试了其他一切)。解决方案:
首先,我为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>
然后,在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();
这就是它的全部内容。之所以这样做是因为我做了一个EditText
我把焦点放在了隐形的地方。由于EditText
不可见,因此它不会干扰WebView
,因为它具有焦点,所以它会适当地拉动软键盘。我希望这有助于陷入类似情况。