android - 键盘的Android Webview Focus问题
问题描述
我正在尝试使用焦点和 android 键盘做基础知识。我有一个具有 WebView 和 Button 的应用程序。
webview 有输入,这将有焦点,但我不希望键盘出现释放用户触摸输入。那是因为我在带有扫描仪的 Zebra 终端上使用它。
我试着这样做:
activity_main.xml
android:descendantFocusability="blocksDescendants"
android:focusable="false"
android:focusableInTouchMode="false"
MainActivity.java
Button toggleKeyboard = findViewById(R.id.btnKeyboard);
toggleKeyboard.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if(!keyboardVisible){
try {
InputMethodManager imm = (InputMethodManager)getSystemService(INPUT_METHOD_SERVICE);
imm.toggleSoftInput(InputMethodManager.SHOW_FORCED,0);
WebView myWebView2 = findViewById(R.id.webview);
myWebView2.setFocusableInTouchMode(true);
keyboardVisible = true;
} catch (Exception e) {
// TODO: handle exception
}
}else{
try {
keyboardVisible = false;
WebView myWebView2 = findViewById(R.id.webview);
myWebView2.setFocusableInTouchMode(false);
InputMethodManager imm = (InputMethodManager)getSystemService(INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(view.getApplicationWindowToken(), 0);
} catch (Exception e) {
// TODO: handle exception
}
}
}
});
那是行不通的。我可以获得焦点而不是第一次显示键盘,但是每次我获得焦点在 webview 上时它都会显示键盘。
我认为问题是因为 setFocusableInTouchMode 无法正常工作。
当我单击按钮而不失去焦点时,有没有办法永远隐藏键盘?
谢谢!
解决方案
推荐阅读
- apache-spark - 在 Spark 3.1.1 java 中添加新列作为数组
- rxjs - Rxjs:等待外部可观察,将值传递给内部并在订阅中返回两个解析值
- java - 使用 tomcat 服务器在 Java 中创建一个简单的 API
- unit-testing - 使用匹配器返回 a 不能为空
- python - 尝试调整框架大小
- servlets - 我们如何根据优先级或顺序在一个 ServletContextListener 中启动多个服务/作业
- excel - 查找并复制整行并在当前行下方插入复制的行
- c++ - 重新分配 CComBSTR,内存泄漏?
- python - 如果用户的 userAccountControl 为 514,如何获取用户的经理
- angular - PRIME NG 表的日期下拉过滤器