我有一套AlertDialog,我可以来回走动。对话框A,对话框B(有HTML内容)和对话框C.对话框BI添加了一个Web视图来显示一些HTML内容,我想禁用键盘弹出这个特定的对话框B. HTML内容没有任何编辑文本的。 我使用过“getWindow()。setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN)” 这是第一次打开对话框时的工作。当我第一次从对话框A导航到对话框B时,对话框B不会弹出键盘。当我从A或C回到对话框B时,当我在HTML内容上滑动时,键盘会弹出。
HTML内容是基于触摸的内容。
我假设每次打开对话框时都不会执行隐藏键盘的代码。
我尝试过“SOFT_INPUT_STATE_ALWAYS_HIDDEN”和“SOFT_INPUT_STATE_HIDDEN”。
编辑:如果我在网页视图上打开谷歌,该视图有一个搜索文本字段。当我触摸编辑文本时,键盘不会弹出,即使我导航也是如此。但是当我尝试在页面上上下滚动时,键盘弹出并消失(从第二次访问对话框时发生)。
请您在每次打开此对话框B时分享您对如何隐藏键盘的想法。
@Override
@Deprecated
protected Dialog onCreateDialog(int id) {
AlertDialog.Builder builder = new AlertDialog.Builder(this,R.style.AlertDialogCustom);
final Boolean pinVerficationDialogPopedUp = loginData.getBoolean("pinVerficationDialogPopedUp",
false);
if (pinVerficationDialogPopedUp == false) {
switch (id) {
case DIALOG_ADD_A_PERSON_BODY_MAP:
try {
LayoutInflater inflaterBodyMap = this
.getLayoutInflater();
final View inflatorBodyMap = inflaterBodyMap
.inflate(
R.layout.dialog_incident_window_body_map,
null);
bodyMapWebView = (WebView) inflatorBodyMap.findViewById(R.id.webView);
bodyMapWebView.getSettings().setJavaScriptEnabled(true);
bodyMapWebView.getSettings().setBuiltInZoomControls(true);
bodyMapWebView.getSettings().setSupportZoom(true);
/*
Trying to resolve issue where sometimes when the HTML page loads, it does
not load the whole content
*/
bodyMapWebView.post(new Runnable() {
@Override
public void run() {
bodyMapWebView.loadUrl("file:///android_asset/bodyMap.html");
}
});
bodyMapWebView.addJavascriptInterface(new WebAppInterface(this), "Android");
builder.setTitle("Injured person");
builder.setView(inflatorBodyMap);
builder.setPositiveButton("Next",
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog,
int which) {
//next dialog
}
});
builder.setNegativeButton("Back",
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog,
int which) {
//previous dialog
}
});
alertBodyMap = builder.create();
alertBodyMap.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN);
alertBodyMap.show();
return dialog;
} catch (Exception e) {
e.printStackTrace();
}
}
}
return dialog
}
非常感谢您的帮助。 谢谢
答案 0 :(得分:0)
问题出在webview上的缩放控制功能。
我曾使用波纹管代码进行变焦控制。 。bodyMapWebView.getSettings()setBuiltInZoomControls(真); 。bodyMapWebView.getSettings()setSupportZoom(真);
我禁用了缩放控件的显示,因此我们只能使用波纹管代码进行缩放。
bodyMapWebView.getSettings().setBuiltInZoomControls(true);
bodyMapWebView.getSettings().setDisplayZoomControls(false);
这解决了问题,webview不再弹出键盘。
使用缩放控件+/-我在XML中实现了ZoomControls
<ZoomControls android:id="@+id/zoomcontrols"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
java代码:
zoomControls = (ZoomControls) inflatorBodyMap.findViewById(R.id.zoomcontrols);
/**
*
*/
zoomControls.setOnZoomInClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
bodyMapWebView.zoomIn();
}
});
zoomControls.setOnZoomOutClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
bodyMapWebView.zoomOut();
}
});
希望这有助于其他人。