android 自定义软键盘的显示和隐藏

复制代码
记一下,以后不用找

在InputMethodService中有这两个方法可以看到软键盘显示状态
复制代码
//软键盘隐藏
override fun onWindowHidden() {
    super.onWindowHidden()
}
复制代码
//软键盘显示
override fun onWindowShown() {
    super.onWindowShown()
}

在activity中可以通过这种方法看到软键盘显示状态

复制代码
view.viewTreeObserver.addOnGlobalLayoutListener {
    // 获取屏幕的高度
    val screenHeight: Int = view.getRootView().getHeight()

    // 获取当前布局的可见高度
    val rect = Rect()
    view.getWindowVisibleDisplayFrame(rect)
    // 计算键盘的高度
    var keyboardHeight = screenHeight - rect.bottom;
    if (keyboardHeight > screenHeight * 0.15) {
        // 键盘显示
        showKeyBoardHeight = keyboardHeight
        if (showKeyBoardHeight - hideKeyBoardHeight > 0) {
        
        }
    } else {
        hideKeyBoardHeight = keyboardHeight
        // 键盘隐藏
    }
}
相关推荐
c***21294 小时前
Springboot3学习(5、Druid使用及配置)
android·学习
修炼者4 小时前
【Android 进阶】别再强转 Context 了!手把手教你优雅解耦 View 与 Activity
android·android studio
x***01064 小时前
SpringSecurity+jwt实现权限认证功能
android·前端·后端
程序员江同学5 小时前
线下活动|2025 Kotlin 中文开发者大会北京分会场
android·kotlin
李坤林6 小时前
Android Vulkan 开启VK_GOOGLE_DISPLAY_TIMING 后,一个vsync 会释放两个imageBuffer现象分析
android·vulkan
Jerry6 小时前
Compose 状态思维
android
k***45996 小时前
MySQL----case的用法
android·数据库·mysql
r***86988 小时前
Plugin ‘mysql_native_password‘ is not loaded`
android·数据库·mysql
v***59838 小时前
MySQL-mysql zip安装包配置教程
android·mysql·adb
不用89k8 小时前
Android无法区分USB摄像头是哪一个
android