博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
EditText禁止软件盘弹出,且不影响其它功能
阅读量:7206 次
发布时间:2019-06-29

本文共 1517 字,大约阅读时间需要 5 分钟。

前言

昨天一个开发群里有个哥们,问了这样一个问题。想要EditText不弹出软键盘,但是又要支持粘贴,复制剪切功能。最初我想的是直接使用TextView设置textIsSelectable为true。但是没有粘贴的功能。。。。

群友的建议如下:

  • 在EditText外围包一层布局,让外层的布局获取焦点
  • 直接设置Activity无法弹出软键盘
  • 自定义View

自己试验了一下,发现都还是有缺陷,后面想想去找找弹出软件盘的位置,直接禁止掉就好了吧。EditText 继承于TextView。最终我在TextView的onTouchEvent中找到了。

看到这里,各位看官就清楚了吧,我只要让if中的条件(isTextEditable() && mEditor.mShowSoftInputOnFocus && imm != null)其中一个为false。我们也就大功告成了。首先在EditText中没有设置isTextEditalbe的方法,pass掉。接着imm != null 也pass掉。只剩下mEditor.mShowSoftInputOnFocus。点击进去一看。默认的就是true。

只要我们将该值设置成false。不就大功告成了。废话到此为止,上大餐。

public static void setEditTextNoSoftInput(EditText editText) {    Class editClass = editText.getClass().getSuperclass();    Class textClass = editClass.getSuperclass();    try {        Field editorField = textClass.getDeclaredField("mEditor");        editorField.setAccessible(true);        Object editorObject = editorField.get(editText);        Class editorClass = editorObject.getClass();        if (!"Editor".equals(editorClass.getSimpleName())) {            editorClass = editorClass.getSuperclass(); // 防止类似于华为使用的自身的HwEditor        }        Field mShowInput = editorClass.getDeclaredField("mShowSoftInputOnFocus");        mShowInput.setAccessible(true);        mShowInput.set(editorObject, false);    } catch (NoSuchFieldException e) {        e.printStackTrace();    } catch (IllegalAccessException e) {        e.printStackTrace();    }}复制代码

亲测了小米还有华为手机,可以正常使用,补充一下,华为使用的是自身的HwEditor继承的Editor,所以多拿了一次父类的Class。其它机型自行测试一下。 PS:后面才发现,有其他人已经写过类似的博客,不过自己就当记录也是可以的。有时从源码出发,往往会有意想不到的收获

转载地址:http://zylum.baihongyu.com/

你可能感兴趣的文章
oracle删除一个用户
查看>>
老男孩教育学员参观机房实践活动
查看>>
《企业云桌面实施》-小技巧-08-建筑设计行业-真实效果-漫游动画-三维视图渲染...
查看>>
SUSE LINUX系统文件句柄限制的修改
查看>>
贺双节,签名版限量特惠
查看>>
警惕“***性社工”现象
查看>>
Exchange 2013与OWA13集成
查看>>
有话请直说
查看>>
虚机不能启动的特例思考
查看>>
OSPF概述
查看>>
自动化部署操作系统-Kickstart+PXE自动部署
查看>>
Eclipse europa 更新时 Error retrieving "feature.xml". [error in opening zip file]的解决
查看>>
Hyper-V损坏数据恢复报告
查看>>
《从零开始学Swift》学习笔记(Day 16)——字典集合
查看>>
[转]配置nginx+apache 其中动态由apache处理,静态由nginx处理
查看>>
在Word中如何实现"后退"?
查看>>
简明 Vim 练级攻略 | 酷壳 - CoolShell.cn
查看>>
养成逻辑的习惯
查看>>
jQuery attributes(上)
查看>>
ISO8583报文协议(转)
查看>>