Android 键盘操作常见问题,Android开发必须会的技能

Android 键盘相关常见问题有:

  1. 限制输入框内字数,超过字数不让输入,并且提示

  2. 点击外部区域键盘自动收起

  3. 如何获取键盘高度

下面将对上述问题各个击破。

1.限制输入框内字数,超过字数不让输入,并且提示


etReply.setFilters(new InputFilter[]{new InputFilter(){

@Override

public CharSequence filter(CharSequence source, int start, int end, Spanned dest, int dstart, int dend) {

if (source.length() + dest.length() > COMMENT_MAX_NUM) {

Crouton.makeText(AppUtils.getString(R.string.infodetail_comment_limit),Style.ALERT).show();

}

return null;

}

}, new InputFilter.LengthFilter(COMMENT_MAX_NUM)});

2. 点击外部区域键盘自动收起


如果当前页面是Activity那么可以直接重写dispatchTouchEvent方法。在ACTION_DOWN事件时,判断点击的坐标是否在输入框坐标的上面,如果是那么调用隐藏键盘的方法。

如果当前页面是Fragment,那么Fragment中增加一个dispatchTouchEvent方法,内部逻辑同上,在Fragment所依赖的Activity代码中将dispatchTouchEvent事件透传给Fragment的dispatchTouchEvent,如果键盘需要隐藏,Fragment的dispatchTouchEvent方法需要返回true,表示消费本次所有触摸事件,不再继续传递。

3. 如何获取键盘高度


首先需要知道一点,键盘高度不是固定的。用户使用不同的输入法,高度可能不一样;甚至有些输入法,可以直接调节输入法面板的高度。

3.1 有没有系统的api可以供我们获取键盘高度?

没有。

3.2 有什么方法可以间接获取键盘高度?

系统给我们提供了一个页面布局变化的监听器OnGlobalLayoutListener,这个监听器可以通知我们布局发生改变,我们可以在此时获取自己的高度,再通过屏幕宽度和状态栏高度等间接计算出键盘的高度。

  • 那么就有一个问题,OnGlobalLayoutListener接收到变化动作时,一定是键盘弹出或消失么?

不一定。

那为什么使用OnGlobalLayoutListener可以监听键盘的状态?

我们知道每个view的宽高变化都会导致OnGlobalLayoutListener的触发,但是对当前Activity的Window对象中的DecorView进行监听时,一般来说,DecorView的尺寸不会发生变化,发生变化的主要原因就是键盘的收起和展开,这时候加上简单的判断(变化超过某个阈值)就可以获取键盘的高度,以及是否弹起。

  • 有没有使用OnGlobalLayoutListener监听键盘失效的情景?

在Android7.0上,我们可以使用多任务键开启分屏/多窗口模式,当我们开启分屏之后,调整分屏的分界线时,都会触发 DecorViewOnGlobalLayoutListener,但是此时键盘并未触发任何动作;而且,当我们点击某个输入框之后,键盘在分屏模式下会变成悬浮模式,不会挤压Activity的控件,所以当键盘弹出或收起时, OnGlobalLayoutListener不会接收到任何事件。这就导致了 OnGlobalLayoutListener完全失效。

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数初中级Android工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则近万的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Android移动开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

img

img

img

img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

如果你觉得这些内容对你有帮助,可以扫码获取!!(备注:Android)

最后

最后这里放上我这段时间复习的资料,这个资料也是偶然一位朋友分享给我的,里面包含了腾讯、字节跳动、阿里、百度2020-2021面试真题解析,并且把每个技术点整理成了视频和PDF(知识脉络 + 诸多细节)。

还有 高级架构技术进阶脑图、高级进阶架构资料 帮助大家学习提升进阶,这里我也免费分享给大家也节省大家在网上搜索资料的时间来学习,也可以分享给身边好友一起学习。

一起互勉~

《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!

QBbXMZzS-1712365472516)]

一起互勉~

《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值