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
        // 键盘隐藏
    }
}
相关推荐
快点好好学习吧12 小时前
CPU 从 L1/L2 缓存读取 MySQL 代码指令的庖丁解牛
android·mysql·缓存
y小花12 小时前
安卓音频接口从APP到Hal的调用流程
android·音视频
CYRUS STUDIO12 小时前
Frida 检测与对抗实战:进程、maps、线程、符号全特征清除
android·逆向·frida
恋猫de小郭13 小时前
Android CLI ,谷歌为 Android 开发者专研的 AI Agent,提速三倍
android·前端·flutter
守月满空山雪照窗13 小时前
Android CTS 深度解析:兼容性测试体系、架构与实践
android·架构
浮生世界13 小时前
Android 动态替换桌面 Logo 实践记录(`activity-alias`)
android
海天鹰13 小时前
字符串数组保存到Map使用避免超出范围崩溃
android
su_ym811014 小时前
Android 与 Linux 对比
android·linux·framework
默|笙14 小时前
【Linux】线程同步与互斥_日志与线程池
android·linux·运维
fengci.14 小时前
蜀道山2024上半部分
android