我为工作创建了一个简单的WebView
应用程序,以使工作人员可以填写表格。
他们必须在2点扫描条形码(平板电脑具有内置扫描仪)。
我的问题是,扫描仪需要专注于输入,因此软键盘会弹出,这是目前不需要的,并且看上去有些混乱。
我尝试了在stackoverflow和google上找到的几种方法来隐藏键盘,但没有成功。
重点是仅在特定页面(使用扫描仪的页面)上隐藏键盘,并且在需要的其他页面上仍然可用。
WebView
的页面内置于HTML
和JS
中。因此,JS解决方案可能会起作用,但我更喜欢真正的Java
解决方案。
我当前使用的代码用于检查url并尝试隐藏键盘(不成功)。如您所见,我已经尝试了几种解决方案,但没有一个可行。
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
super.onPageStarted(view, url, favicon);
Log.d("WebView", "your current url when webpage loading.." + url);
if(url.equals("https://********/index.php?show=kontrolle&step=4")) {
this.activity.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
Log.d("WebView", "should hide now!");
//view = activity.findViewById(android.R.id.content);
//InputMethodManager imm =(InputMethodManager) this.activity.getSystemService(Context.INPUT_METHOD_SERVICE);
//imm.hideSoftInputFromWindow(view.getWindowToken(), 0);
//this.activity.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN);
//this.activity.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
}
}
答案 0 :(得分:0)
在manifest.xml文件中,编写以下代码
<activity
android:name=".activity.MainActivity"
android:windowSoftInputMode="stateHidden" />
答案 1 :(得分:0)
使用此
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
//hide keboard:
imm.hideSoftInputFromWindow(myEditText.getWindowToken(), 0);
//and for show keyboard
imm.showSoftInput(myEditText, InputMethodManager.SHOW_IMPLICIT);
答案 2 :(得分:0)
您需要了解WebViewClient
,请访问this url
1)首先,您需要添加WebViewClient,并且在更改页面时,您可以在shouldOverrideUrlLoading
上获取当前网址,该网址会检查当前网址并将其与您的网址进行比较并隐藏键盘
例如:
WebView webview = new WebView(context);
webview.setWebViewClient(new WebViewClient()
{
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
super.onPageStarted(view, url, favicon);
Log.d("WebView", "your current url when webpage loading.." + url);
}
@Override
public void onPageFinished(WebView view, String url) {
Log.d("WebView", "your current url when webpage loading.. finish" + url);
super.onPageFinished(view, url);
}
@Override
public void onLoadResource(WebView view, String url) {
// TODO Auto-generated method stub
super.onLoadResource(view, url);
}
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
System.out.println("when you click on any interlink on webview that time you got url :-" + url);
//compare here your URL and hide keyboard
return super.shouldOverrideUrlLoading(view, url);
}
});
隐藏软键盘的代码
有两种方法可以隐藏软键盘,您可以将其保留在Common-Utils类中
public static void hideSoftKeyboard(Activity activity) {
if (activity != null && activity.getCurrentFocus() != null) {
InputMethodManager inputMethodManager = (InputMethodManager) activity.getSystemService(INPUT_METHOD_SERVICE);
inputMethodManager.hideSoftInputFromWindow(activity.getCurrentFocus().getWindowToken(), 0);
}
}
如果有EditText
可用的第二种方法
public static void forceHideKeyboard(Activity activity, EditText editText) {
try {
if (editText == null) return;
if (activity.getCurrentFocus() == null
|| !(activity.getCurrentFocus() instanceof EditText)) {
editText.requestFocus();
}
InputMethodManager imm = (InputMethodManager) activity
.getSystemService(INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(editText.getWindowToken(), 0);
activity.getWindow().setSoftInputMode(
WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}