如和优雅地实现键盘展开/收起监听 Android 键盘的展开与收起一直是个很遭人诟病的东西 方法各式各样都有,但是基本都不是很好用,有各种限制 这里编写了一个优雅地实现方式,利用屏幕实际高度与显示
Android 键盘的展开与收起一直是个很遭人诟病的东西
方法各式各样都有,但是基本都不是很好用,有各种限制
这里编写了一个优雅地实现方式,利用屏幕实际高度与显示区域的高度对比可以优雅地判断出是否弹出键盘.
众所周知键盘是会侵占实际应用的显示区域,导致实际显示区域要远小于屏幕高度
class KeyBoardUtil( activity: Activity, var keyboardVisibilityListener: ((isVisibility: Boolean) -> Unit)?) { private val contentView: View var height: Int = 0 var isVisibility = false init { contentView = activity.window.decorView //初始化时先判断当前键盘状态 isVisibility = getScreenHeight(activity) > getWindowContentHeight(activity) //这个监听的主要作用是在键盘弹出布局发生改变时 动态的通知用户键盘是否弹出 contentView.viewTreeObserver.addOnGlobalLayoutListener { isVisibility = if (getScreenHeight(activity) > getWindowContentHeight(activity)) { keyboardVisibilityListener?.invoke(true) true } else { keyboardVisibilityListener?.invoke(false) false } } } //屏幕高度 固定不变 = 屏幕高度 - titlebar private fun getScreenHeight(context: Context?): Int { val displayMetrics = context!!.resources.displayMetrics return displayMetrics.heightPixels } //可视区域高度 会根据显示区域变化 出现键盘时变小 不出现时 大于等于 getScreenHeight()高度 private fun getWindowContentHeight(activity: Activity?):Int{ if (activity==null)return 0 val rect = Rect() activity.window.decorView.getWindowVisibleDisplayFrame(rect) return rect.height() } compaNIOn object{ fun hideKeyboard(context:Activity?) { val imm = context?.getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager // 隐藏软键盘 imm.hideSoftInputFromWindow(context.window.decorView.windowToken, 0); } }}
var keyBoardUtil: KeyBoardUtil = KeyBoardUtil(activity){isVisibility->}fun show(){ if (keyBoardUtil?.isVisibility==true){//判断当前键盘是否显示 KeyBoardUtil.hideKeyboard(this)//收起键盘 keyBoardUtil?.keyboardVisibilityListener={//键盘收起监听 if (!it){//键盘收起后下一步 //todo 操作 keyBoardUtil?.keyboardVisibilityListener = null//取消监听,防止后续键盘持续监听 } } }else{ //todo 当前键盘未显示 下一步 }}
来源地址:https://blog.csdn.net/qq_35644925/article/details/128905644
--结束END--
本文标题: Android 键盘监听 键盘展开/收起监听
本文链接: https://www.lsjlt.com/news/389716.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
下载Word文档到电脑,方便收藏和打印~
2024-01-21
2023-10-28
2023-10-28
2023-10-27
2023-10-27
2023-10-27
2023-10-27
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
一口价域名售卖能注册吗?域名是网站的标识,简短且易于记忆,为在线用户提供了访问我们网站的简单路径。一口价是在域名交易中一种常见的模式,而这种通常是针对已经被注册的域名转售给其他人的一种方式。
一口价域名买卖的过程通常包括以下几个步骤:
1.寻找:买家需要在域名售卖平台上找到心仪的一口价域名。平台通常会为每个可售的域名提供详细的描述,包括价格、年龄、流
443px" 443px) https://www.west.cn/docs/wp-content/uploads/2024/04/SEO图片294.jpg https://www.west.cn/docs/wp-content/uploads/2024/04/SEO图片294-768x413.jpg 域名售卖 域名一口价售卖 游戏音频 赋值/切片 框架优势 评估指南 项目规模
0