【问题标题】:How can we detect which keyboard is open, Numeric or Alpha Numeric in android Webview?我们如何在android Webview中检测哪个键盘是打开的,数字或字母数字?
【发布时间】:2020-07-02 16:53:04
【问题描述】:

嗨,我是新来的,我需要知道如何检测在 android webview 中打开了哪种键盘类型,这是我的尝试

KeyboardUtils.addKeyboardToggleListener(this, new KeyboardUtils.SoftKeyboardToggleListener()
        {
            @Override
            public void onToggleSoftKeyboard(boolean isVisible)
            {
                if(isVisible){
                    InputMethodManager imm =(InputMethodManager)MainActivity.this.getSystemService(Context.INPUT_METHOD_SERVICE);
                    Log.d(TAG, "onToggleSoftKeyboard: "+imm.getCurrentInputMethodSubtype().getMode());
//                       



                }
                Log.d("keyboard", "keyboard visible: "+isVisible);
            }

        });

【问题讨论】:

  • 结果如何?
  • 我得到了这个日志onToggleSoftKeyboard: keyboard

标签: android webview android-softkeyboard


【解决方案1】:

您可以使用下面的代码来检查类型

private fun getKeyboardType(){
        val devicesIds = InputDevice.getDeviceIds()
        for (deviceId in devicesIds) {
            val device = InputDevice.getDevice(deviceId)
            device.keyboardType //returns an integer
            
            // Now compare this integer with predefined constant values : https://developer.android.com/reference/android/text/InputType
            
        }
    }

将整数值与常量here进行比较

您可以使用侦听器检查键盘何时打开/关闭。

val listener = object : ViewTreeObserver.OnGlobalLayoutListener {

    // Keep a reference to the last state of the keyboard

    private var lastState: Boolean = activity.isKeyboardOpen() 
    override fun onGlobalLayout() {
        val isOpen = activity.isKeyboardOpen()
        if (isOpen == lastState) {
            return
        } else {
            dispatchKeyboardEvent(isOpen)
            lastState = isOpen
        }
    }
}

并在活动生命周期回调中添加该监听器

override fun onResume() {
    super.onResume()
    val view = getRootView()
    view.viewTreeObserver.addOnGlobalLayoutListener(listener)
}

记得在活动不再活跃时移除监听器

override fun onPause() {
    super.onPause()
    val view = getRootView()
    view.viewTreeObserver.removeOnGlobalLayoutListener(listener)
}

【讨论】:

  • 如何比较keyboardType和当前打开的键盘?
  • 键盘打开时如何获取keyboardType?
  • 谢谢,但我知道如何检查打开/隐藏/关闭键盘,但我的问题是如何检测哪个键盘是打开的数字一或字母数字一
  • 正如我之前提到的,将keyboardType整数与常量值进行比较,您可以从中获取详细信息:developer.android.com/reference/android/text/InputType 循环并匹配类型,您将知道屏幕上显示的是哪种类型。
  • 对不起,我得到的不是超过一个 onToggleSoftKeyboard: 2 onToggleSoftKeyboard: 1 onToggleSoftKeyboard: 1 onToggleSoftKeyboard: 1
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-03-23
  • 1970-01-01
  • 1970-01-01
  • 2020-07-06
  • 2016-02-20
  • 2011-03-15
  • 2023-03-18
相关资源
最近更新 更多