当前位置:首页 > 实用技巧 >

oppo 手机的键盘显示不出来怎么办(oppo手机输入键盘没了怎么办)

来源:原点资讯(www.yd166.com)时间:2023-06-02 07:53:17作者:YD166手机阅读>>

oppo 手机的键盘显示不出来怎么办,oppo手机输入键盘没了怎么办(1)

接上一篇文章,本篇开始源码的角度来分析问题。应用层的问题可以回去看看上一篇文章。


三、源码分析

3.1 flag 的细节

前面的一些方法,都需要传递一个 flag 值,文档中描述的并不详细,我们就从源码的角度,来分析一下这些 flag 的含义。

先来看看 showSoftInput() 方法。

oppo 手机的键盘显示不出来怎么办,oppo手机输入键盘没了怎么办(2)

它最终会调用 mService.showSoftInput() 方法,最终的源码,就需要查看 InputMethodManagerService 中的代码了。而 showSoftInput() 方法,最终会调用 showCurrentInputLocked()

这个方法的代码很长,我们只关心和 flag 相关的代码。

oppo 手机的键盘显示不出来怎么办,oppo手机输入键盘没了怎么办(3)

可以看到,flag 会影响两个字段,mShowExplicitlyRequested 和 mShowForced,而 SHOW_FORCED 会更强势一点。

hideSoftInputFromWindow() 方法,最终也会调用 InputMethodManagerService 中的 hideCurrentInputLocked() 方法。

oppo 手机的键盘显示不出来怎么办,oppo手机输入键盘没了怎么办(4)

DEBUG == true 会输出的 Log 中,已经可以看到含义了。这里会根据显示和隐藏传递的两个 flag 来进行比对,也就是说,如果 flag 使用不正确,可能导致这里直接返回 false ,从而无法隐藏软键盘,这些细节对照代码就清晰了,就不在文章里屡这些细节了。

所以这就是为什么前面提到,如果没有特殊要求,直接传递 0 就好了,可以规避这个限制。

3.2 如何判断软键盘是否弹出

既然 toggleSoftInput() 可以根据当前软键盘的状态,进行不同的操作,那么肯定是有办法确定当前软键盘的状态的。

那我们继续追踪 toggleSoftInput() 的方法源码。

该方法,最终会调用到 InputMethodService 的 onToggleSoftInput() 方法。

oppo 手机的键盘显示不出来怎么办,oppo手机输入键盘没了怎么办(5)

在这个方法中,是根据 isInputViewShow() 方法来判定当前软键盘是否处于显示弹出的状态。但是我们并没有办法,直接和 InputMethodService 进行交互,我们也就没办法直接拿到当前键盘是否显示。

如果想要监听键盘的弹出和收起,可以使用 ViewTreeObserver.OnGlobalLayoutListener 这个监听,来监听布局的调整,从而判断出键盘的弹出和隐藏。这些细节有时间再聊。

四、KeyboardUtils

既然已经清楚了软键盘的收起和弹出的方法细节,那我们来写一个帮助类,来解决这个问题。让你们拿到就可用。

这里提供一下 Java 版和 kotlin 版。

4.1 Java 版

public class KeyboardUtils { public static void showKeyboard(View view) { InputMethodManager imm = (InputMethodManager) view.getContext() .getSystemService(Context.INPUT_METHOD_SERVICE); if (imm != null) { view.requestFocus(); imm.showSoftInput(view, 0); } } public static void hideKeyboard(View view){ InputMethodManager imm = (InputMethodManager) view.getContext() .getSystemService(Context.INPUT_METHOD_SERVICE); if (imm != null) { imm.hideSoftInputFromWindow(view.getWindowToken(),0); } } public static void toggleSoftInput(View view){ InputMethodManager imm = (InputMethodManager) view.getContext() .getSystemService(Context.INPUT_METHOD_SERVICE); if (imm != null) { imm.toggleSoftInput(0,0); } }}

4.2 Kotlin 版

object KeyboardktUtils{ fun showKeyboard(view: View) { val imm = view.context .getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager if (imm != null) { view.requestFocus() imm.showSoftInput(view, 0) } } fun hideKeyboard(view: View) { val imm = view.context .getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager imm?.hideSoftInputFromWindow(view.windowToken, 0) } fun toggleSoftInput(view: View) { val imm = view.context .getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager imm?.toggleSoftInput(0, 0) }}

我准备了一些我整理的学习资料,包含:Android反编译、算法、设计模式、kotlin、Python、爬虫、虚拟机、Linux、计算机网络、Web项目源码。如果有兴趣可以私信我。

栏目热文

youtube视频链接转换(youtube视频转换mp3网站)

youtube视频链接转换(youtube视频转换mp3网站)

Any Video Converter Free是一款免费的视频下载和视频转换工具,支持B站、YouTube、Faceb...

2023-06-02 07:45:28查看全文 >>

youtube上的视频保存

youtube上的视频保存

Youtube在线下载工具使用Youtube直接下载工具,自己网速足够快的话,可以直接快速的下载Youtube影片。以下...

2023-06-02 08:15:41查看全文 >>

youtube视频软件

youtube视频软件

Clicker for YouTube是一款Chrome浏览器扩展程序,旨在提高用户在YouTube上的观看体验。作为一...

2023-06-02 08:10:20查看全文 >>

youtube上传视频的格式

youtube上传视频的格式

​[恭喜发财]带你掌握油管流量密码❇️油管shorts每天都能够获得150亿的观看次数,通过发布 shorts,每个月可...

2023-06-02 08:02:48查看全文 >>

YouTube视频怎样转成中文(youtube视频标题变成中文)

YouTube视频怎样转成中文(youtube视频标题变成中文)

怎么把视频转文字?如果你在看视频时,想要把视频中的对话转成文字,那么这篇文章就是为你准备的。在某些情况下,将视频内容转化...

2023-06-02 08:23:23查看全文 >>

oppo手机键盘找不到了(oppo手机怎么恢复键盘)

oppo手机键盘找不到了(oppo手机怎么恢复键盘)

日常我们在使用手机时每天都会不断的输入大量的文字,无论五笔、拼音还是手写,相较于语音输入技术而言却依旧没有可比性,目前国...

2023-06-02 08:11:06查看全文 >>

oppo手机输入键盘不见了怎么办(oppo手机下面键盘看不见了怎么办)

oppo手机输入键盘不见了怎么办(oppo手机下面键盘看不见了怎么办)

简介:智能输入法都带有软键盘,利用软键盘同样可以输入文字和符号。工具:百度输入法1.同时按住Ctrl和Shift的组合键...

2023-06-02 07:52:24查看全文 >>

oppo手机没有键盘怎么回事啊(oppo手机没有微信提示音怎么回事)

oppo手机没有键盘怎么回事啊(oppo手机没有微信提示音怎么回事)

在功能机,或者说是以塞班系统为代表的“准智能手机”时代,QWERTY全键盘无疑是最酷最实用的设计之一,并成就了黑莓手机和...

2023-06-02 08:30:15查看全文 >>

oppo手机不见了键盘怎么处理(oppo手机不见了怎么办)

oppo手机不见了键盘怎么处理(oppo手机不见了怎么办)

想必有不少小伙伴在日常生活中都出现过手机丢失的窘状,如果是遗落在公司、朋友家里或是一些门店还好,毕竟在发现手机不见的第一...

2023-06-02 08:31:09查看全文 >>

最最最最最简单的灯笼(最最最最最简单的灯笼怎么画)

最最最最最简单的灯笼(最最最最最简单的灯笼怎么画)

吾乡早年,糊灯笼也是迎接春节必不可少的杂事之一。我之所以说是杂事,是相对于那些更为重要且繁复的活计而言,比如杀年猪,比如...

2023-06-02 08:24:47查看全文 >>

文档排行