Kotlin 监听键盘显示隐蔽

计算机软件开发 2024-9-21 12:06:18 107 0 来自 中国
近来碰上了必要监听键盘显示和隐蔽,在Kotlin场景下封装了一个扩展方法,方便日后使用。
Android体系自己并没有提供有用的方法可以监听键盘的显示和隐蔽,常用的监听方法莫过于屏幕的可见地区高度,当高度变化凌驾肯定值,一样寻常以为是凌驾200像素,就分析有键盘的显示和隐蔽利用。
fun Activity.observeKeyboardChange(onChange: (isShowing: Boolean) -> Unit) {    val rootView = this.window.decorView    val r = Rect()    var lastHeight = 0    rootView.viewTreeObserver.addOnGlobalLayoutListener {        rootView.getWindowVisibleDisplayFrame(r)        val height = r.height()        if (lastHeight == 0) {            lastHeight = height        } else {            val diff = lastHeight - height            if (diff > 200) {                onChange(true)                lastHeight = height            } else if (diff < -200) {                onChange(false)                lastHeight = height            }        }    }}番外
EditText可以在xml中通过inputType="textMultiLine"来设置可以输入多行笔墨,通过imeOptions="actionDone"来设置键盘右下角按钮,有ACTION_DONE、ACTION_SEARCH、ACTION_SEND等常用设置。
但是呢,假如设置了inputType="textMultiLine",可以多行输入,此时的键盘右下角按钮就会默以为换行利用,设置的imeOptions属性就会失效。在网上探求多番,终于找到了一种有用的使得inputType="textMultiLine"和imeOptions="actionDone"同时见效的方法。
起首,在xml里设置inputType="textMultiLine";
然后,通过代码设置imeOptions为actionDone。
et.imeOptions = EditorInfo.IME_ACTION_DONEet.setRawInputType(InputType.TYPE_CLASS_TEXT)
您需要登录后才可以回帖 登录 | 立即注册

Powered by CangBaoKu v1.0 小黑屋藏宝库It社区( 冀ICP备14008649号 )

GMT+8, 2024-11-24 16:12, Processed in 0.211555 second(s), 32 queries.© 2003-2025 cbk Team.

快速回复 返回顶部 返回列表