我有一个Webview,我加载了一个网址。此网址有一个表单,但我不想在用户点击填写表单时显示Android的键盘。我试过这个:
在活动中:
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN);
在清单中:
android:windowSoftInputMode="stateHidden"
在布局中:
android:descendantFocusability="blocksDescendants"
和webview的属性:
android:focusable="false"
android:focusableInTouchMode="true"
没有什么对我有用,有解决方案吗?感谢
我的代码是:
mWebview = new WebView(this);
mWebview.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
if (url.startsWith("tel:")) {
//initiateCall(url);
return true;
}
if (url.startsWith("mailto:")) {
//sendEmail(url.substring(7));
return true;
}
return false;
}
});
mWebview.getSettings().setJavaScriptEnabled(true);
mWebview .loadUrl("http://www.myweb.com");
setContentView(mWebview );
答案 0 :(得分:0)
我不确定,但你可以这样做:
mWebView.setOnTouchListener(new View.OnTouchListener() {
public boolean onTouch(View v, MotionEvent event) {
hideSoftKeyboard(View v);
return false;
}
});
隐藏部分:
public void hideSoftKeyboard(View v) {
Activity activity = (Activity) v.getContext();
InputMethodManager inputMethodManager = (InputMethodManager) activity.getSystemService(Activity.INPUT_METHOD_SERVICE);
inputMethodManager.hideSoftInputFromWindow(activity.getCurrentFocus().getWindowToken(), 0);
}
看,如果有效..
答案 1 :(得分:0)
您可以尝试添加焦点侦听器并在焦点更改时隐藏键盘
mWebview.setOnFocusChangeListener(new OnFocusChangeListener() {
@Override
public void onFocusChange(View v, boolean hasFocus) {
//hide keyboard
InputMethodManager inputManager = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
if(null != inputManager && null != getCurrentFocus()) {
inputManager.hideSoftInputFromWindow(getCurrentFocus().getWindowToken(), 0);
}
}
});
答案 2 :(得分:0)
这有点棘手,但通常编程就是这样;)
您使用javascript制作的主要想法是只读取网页上的所有可编辑元素。在我的例子中,我为inputs
制作了它,但通常你可以选择你想要的一切。
应该有效:
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
WebView webView = new WebView(this);
setContentView(webView);
webView.getSettings().setJavaScriptEnabled(true);
final String js = "javascript: var allInputs = document.getElementsByTagName('input'); for (var i = 0, len = allInputs.length; i < len; ++i) { allInputs[i].readOnly = true;}";
webView.setWebViewClient(new WebViewClient(){
@Override
public void onPageFinished(WebView view, String url) {
if (Build.VERSION.SDK_INT >= 19) {
view.evaluateJavascript(js, new ValueCallback<String>() {
@Override
public void onReceiveValue(String s) { }
});
} else {
view.loadUrl(js);
}
}
});
webView.loadUrl("https://www.google.de/");
}
}