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
        // 键盘隐藏
    }
}
相关推荐
RATi GORI1 小时前
MySQL中的CASE WHEN语句:用法、示例与解析
android·数据库·mysql
MoFe12 小时前
【Mysql】创建IP授权用户并授权
android
冬奇Lab3 小时前
Camera2 API架构基础:Android视频系统的大门
android·音视频开发·源码阅读
hnlgzb4 小时前
安卓app kotlin语法,Hilt是什么东西?
android·开发语言·kotlin
Android系统攻城狮5 小时前
Android tinyalsa深度解析之pcm_params_get_periods_min调用流程与实战(一百七十三)
android·pcm·tinyalsa·音频进阶手册
Xempastissimo6 小时前
Android常见界面控件
android
法欧特斯卡雷特6 小时前
从 Kotlin 编译器 API 的变化开始: 2.3.20
android·后端·开源
词元Max7 小时前
1.5 Harness 架构深度解析:Claude Code 为什么强?
android·架构
yy55277 小时前
Mysql 主从复制与读写分离
android·数据库·mysql
zhenxin01228 小时前
万字详解 MySQL MGR 高可用集群搭建
android·mysql·adb