首页 > 解决方案 > 键盘的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 无法正常工作。

当我单击按钮而不失去焦点时,有没有办法永远隐藏键盘?

谢谢!

标签: androidwebview

解决方案


推荐阅读