1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > 简单可用 Android 安卓软键盘弹出 隐藏监听方法回调

简单可用 Android 安卓软键盘弹出 隐藏监听方法回调

时间:2020-06-26 03:12:22

相关推荐

简单可用 Android 安卓软键盘弹出 隐藏监听方法回调

工具类

import android.app.Activityimport android.graphics.Rectimport android.view.ViewTreeObserverclass SoftKeyBoardListener {fun setOnSoftKeyBoardChangeListener(activity: Activity,funShow: (i: Int) -> Unit,funHide: (i: Int) -> Unit) {//纪录根视图的显示高度var rootViewVisibleHeight = 0//获取activity的根视图val rootView = activity.window.decorView//监听视图树中全局布局发生改变或者视图树中的某个视图的可视状态发生改变rootView.viewTreeObserver.addOnGlobalLayoutListener(//获取当前根视图在屏幕上显示的大小ViewTreeObserver.OnGlobalLayoutListener {val r = Rect()rootView.getWindowVisibleDisplayFrame(r)val visibleHeight = r.height()if (rootViewVisibleHeight == 0) {rootViewVisibleHeight = visibleHeightreturn@OnGlobalLayoutListener}//根视图显示高度没有变化,可以看作软键盘显示/隐藏状态没有改变if (rootViewVisibleHeight == visibleHeight) {return@OnGlobalLayoutListener}//根视图显示高度变小超过200,可以看作软键盘显示了if (rootViewVisibleHeight - visibleHeight > 200) {funShow(rootViewVisibleHeight - visibleHeight)rootViewVisibleHeight = visibleHeightreturn@OnGlobalLayoutListener}//根视图显示高度变大超过200,可以看作软键盘隐藏了if (visibleHeight - rootViewVisibleHeight > 200) {funHide(visibleHeight - rootViewVisibleHeight)rootViewVisibleHeight = visibleHeightreturn@OnGlobalLayoutListener}})}}

使用

SoftKeyBoardListener().setOnSoftKeyBoardChangeListener(this@LoginActivity,{i -> binding.rlLogo.isVisible = false },{j -> binding.rlLogo.isVisible = true })

有时候弹出软键盘会使布局出现出乎预期的现象,这时候要考虑Manifest文件中Activity的windowSoftInputMode属性。

在我的开发中,想做软键盘弹出时,部分屏幕出现蒙层的结果,但是在软键盘弹出时蒙层总会自动消失,这时候在Manifest的相应Activity中加上:

android:windowSoftInputMode="adjustPan"

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。