Android EditText 实现强制性弹出只能输入英文的键盘

news2024/9/29 3:31:28

    如果 EditText 控件不做任何特殊处理,例如笔者手机默认弹出的是百度输入法的软键盘,可实现中英文切换,并且自带英文单词智能联想功能(与系统安装输入法和设置相关)。但在某些应用场景下,例如在英语APP里练习英文句子听写,需要实现:

默认弹出只能输入英文的键盘,不允许切换到中文输入键盘,屏蔽输入法的智能联想功能。

    下面直接给出答案:

方式1:EditText 属性:

android:inputType="textVisiblePassword | textMultiLine"

方式2:代码实现

setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD | InputType.TYPE_TEXT_FLAG_MULTI_LINE);

解释:

    因为 EditText 的属性设置里并没有一个专门设置只能弹出英文键盘的功能 。(注意区分:android:digits="abcd...xyz 123456789" 这个只能实现输入内容的过滤)

    textVisiblePassword InputType.TYPE_TEXT_VARIATION_NORMAL 的字面意思是“输入密码可见”的意思,虽然与“只限英文输入”的需求实现并不对应,但是却“歪打正着”地实现了我们的需求,但是如果只添加此属性,却又无法输入多行文本(按回车键也不行),所以还需添加属性 textMultiLine 或 InputType.TYPE_TEXT_FLAG_MULTI_LINE。

笔者使用的是华为手机,所以采用上面的方式弹出的是一个只能输入英文的华为安全键盘。

疑问:

    那为什么第二个方法还需要添加一个 InputType.TYPE_CLASS_TEXT 呢?比第一个方法多设置了一个属性。经过笔者测试,如果不添加该属性,如下:

setInputType(InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD | InputType.TYPE_TEXT_FLAG_MULTI_LINE);

    虽然从效果上看,确实能实现只弹出英文键盘的目的,但还是无法输入多行文本,尽管我们特地还添加了一个“TYPE_TEXT_FLAG_MULTI_LINE”属性。后面查看相关属性值的文档就明白了,在EditText 的 XML布局文件里点击 InputType 的对应的链接,进入到 attrs.xml 文件,找到 textVisiblePassword

<!-- Text that is a password that should be visible.  Corresponds to
{@link android.text.InputType#TYPE_CLASS_TEXT} |
{@link android.text.InputType#TYPE_TEXT_VARIATION_VISIBLE_PASSWORD}. -->
<flag name="textVisiblePassword" value="0x00000091" />

    看到了吗?textVisiblePassword 的值为 0x00000091,而且写的非常清楚的,它是:TYPE_CLASS_TEXT 与 TYPE_TEXT_VARIATION_VISIBLE_PASSWORD 两者二进制“或运算”的结果。两个属性值得二进制值分别为:0x00000001 和 0x00000090,两者的或运算就等于0x00000091。

    /**
     * Variation of {@link #TYPE_CLASS_TEXT}: entering a password, which should
     * be visible to the user.
     */
    public static final int TYPE_TEXT_VARIATION_VISIBLE_PASSWORD = 0x00000090;
    /**
     * Class for normal text.  This class supports the following flags (only
     * one of which should be set):
     * {@link #TYPE_TEXT_FLAG_CAP_CHARACTERS},
     * {@link #TYPE_TEXT_FLAG_CAP_WORDS}, and.
     * {@link #TYPE_TEXT_FLAG_CAP_SENTENCES}.  It also supports the
     * following variations:
     * {@link #TYPE_TEXT_VARIATION_NORMAL}, and
     * {@link #TYPE_TEXT_VARIATION_URI}.  If you do not recognize the
     * variation, normal should be assumed.
     */
    public static final int TYPE_CLASS_TEXT = 0x00000001;

所以,方式二相对方式一,在用代码实现时,需要多加一个属性:TYPE_CLASS_TEXT。

另外:

    如果你只是想“优先”弹出英文键盘,但还是允许可以切换到中文输入法,可以做下面的设置:

InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_NORMAL

最后:

    如果真的想完全掌控键盘的一切,那就定制一款英文键盘吧,这个虚拟软键盘可以自主定义全部的字母和数字,包括他们的布局和事件监听等。

自定义软键盘,请参考:https://www.cnblogs.com/sixrain/p/7793610.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1181479.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

在CSDN上挣点外快的小tips

作为一个在csdn上也挣了一点辛苦费的博主&#xff0c;个人简单总结了两个方法。 1、道德的方法 如上图&#xff0c;可以把自己曾经做过的一些设计或其它资源类的内容&#xff0c;打包传到CSDN的资源池中&#xff0c;有条件的可以写个文章引流一下&#xff0c;运气好的话会有人下…

Python基础入门(6)----Python控制流:if语句、for循环、while循环、循环控制语句

文章目录 Python控制流:if语句、for循环、while循环、循环控制语句if语句示例:for循环示例:while循环示例:循环控制语句示例:最佳实践Python控制流:if语句、for循环、while循环、循环控制语句 控制流是编程中的基础概念,它允许我们根据不同的条件执行不同的代码块,或者…

中西部地区教育正获优质均衡高质量发展

教育部日前消息&#xff0c;2022年我国基础教育财政性教育经费达3.2万亿元&#xff0c;比2015年增加了1.3万亿元&#xff0c;年均增长7.7%。近些年来&#xff0c;我国基础教育各学段财政总投入和生均支出逐年只增不减&#xff0c;为推动基础教育优质均衡发展提供了有力支撑。 …

antd 表单项联动验证时,disabled属性不生效

在antd表单中&#xff0c;表单项验证条件是根据其他表单项的值决定的&#xff0c;比如当前【时间限制】选择【无】时&#xff0c;【限制时段】表单项不可用 所以我单纯使用 disabled{sourceForm.getFieldValue().timeLimit}是不生效的&#xff0c;因为disabled切换会涉及到st…

怎么在相册里去水印?三种方法教你去除

当你查看相册时&#xff0c;有时可能会注意到一些照片上有水印&#xff0c;这可能会让人感到不满,不管你是想保存这些照片还是与他人分享&#xff0c;水印往往会影响图片的观赏效果&#xff0c;不过别担心我将向你介绍一些简单的方法&#xff0c;帮助你在相册中轻松去除这些水印…

解决docker tag打标签时报错:Error response from daemon: no such id

现象&#xff1a; 原因&#xff1a; docker tag时不仅仅要Repository仓库名&#xff0c;也需要原有的tag作为版本号 解决办法&#xff1a; docker tag 原有仓库名: 原有tag值 新的打标名称 问题解决&#xff01;

适合汽车应用的MAX49017ATA/VY、MAX40025AAWT、MAX40025CAWT、MAX40026ATA/VY(线性)微功耗比较器

一、MAX49017ATA/VY 内置基准电压源的1.7V、双通道微功耗比较器 MAX49017是一款节省空间的双通道比较器&#xff0c;内置基准电压源&#xff0c;提供推挽输出。该器件通过了AEC-Q100认证&#xff0c;非常适合汽车应用&#xff0c;例如汽车电池监控系统、信息娱乐系统音响主机和…

冰点还原精灵 Deep Freeze 管理密码忘了怎么办?

环境&#xff1a; Win10 专业版 Deep Freeze V.8.63 问题描述&#xff1a; 冰点还原精灵 Deep Freeze 管理密码忘了怎么办&#xff1f; 解决方案&#xff1a; 1.找一台安装Deep Freeze V.8.63相同版本的电脑&#xff0c;进入PE复制C盘Persi0.sys文件 2.到要破解电脑上进入…

DAY 12 结构体(重点) 共用体 枚举01

1.结构体 1.概念 将基本类型或构造类型封装在一起&#xff0c;拥有独立空间&#xff0c;这个数据结构 就叫结构体。 结构体 使用的关键字 struct. 一个结构体可以定义多个结构体变量 2.定义 注意&#xff1a; 1,结构体定义一般在头文件中 2,不要在定义结构体时给其成员初始…

7.判断素数----不知道哪里错了

#include<stdio.h>void fun(int n) { int i;for(i2;i<n;i){if(n%i0)break;}if(in)printf("%d是素数\n",n);elseprintf("%d不是素数",n); }int main(){int n;scanf("d",&n);fun(n);return 0;}

王干娘和西门庆-UMLChina建模知识竞赛第4赛季第18轮

DDD领域驱动设计批评文集 做强化自测题获得“软件方法建模师”称号 《软件方法》各章合集 参考潘加宇在《软件方法》和UMLChina公众号文章中发表的内容作答。在本文下留言回答。 只要最先全部答对前3题&#xff0c;即可获得本轮优胜。 所有题目的回答必须放在同一条消息中&…

虚幻引擎:如何使用 独立进程模式进行模拟

第一步:先更改配置 第二步,在启动的两个玩家里面,一个设为服务器,一个链接进去地图就可以了 1.设置服务器 2.另一个玩家链接

kubernetes存储-volumes

目录 一、Volumes的简介 二、emptyDir卷 1、emptyDir的引入 2、emptyDir 的使用场景 3、多容器共享volumes 4、emptyDir缺点 三、hostPath卷 1、hostPath卷简介 2、创建hostPath卷 3、NFS共享文件 四、PersistentVolume&#xff08;持久卷&#xff09; 1、PV与P…

利用SPDK改善NVMe存储I/O性能

长期以来&#xff0c;SATA、SAS盘统治着企业级存储&#xff0c;虽然前些年 SSD固态存储介质的出现对 AHCI协议类型的存储访问带来了一定性能提升&#xff0c;但与 CPU 的计算速度相比&#xff0c;只能是杯水车薪&#xff0c;并且 SSD 的性能也不能充分地得到发挥。传统存储技术…

缓存-Spring Cache 缓存抽象

缓存-Spring Cache 缓存抽象 Spring从版本3.1开始提供非侵入的将Cache集成到Spring应用的方式。Spring Cache提供Cache的统一抽象&#xff0c;支持集成各种不同的缓存解决方案。从4.1版本开始&#xff0c;提供了注解和更多的定制参数。 Spring Cache 抽象提供了对Java方法的缓存…

图形推理 | 判断推理

文章目录 一、位置规律二、样式规律三、属性规律四、数量规律 一、位置规律 平移 方向&#xff1a;直线&#xff08;上下、左右、斜对角线&#xff09;、绕圈&#xff08;顺逆时针&#xff09;常见步数&#xff1a;恒定、递增&#xff08;等差&#xff09; 旋转 方向&#xff…

优化仓储分拣流程——WMS系统的分拣方法

在现代物流管理中&#xff0c;仓储分拣是一个至关重要的环节。为了提高分拣效率和准确性&#xff0c;越来越多的企业采用WMS系统来支持分拣操作&#xff0c;帮助企业优化仓储分拣流程。 1. 分拣策略制定&#xff1a; WMS系统可以根据不同的业务需求和产品特性&#xff0c;制定…

机器学习 - DBSCAN聚类算法:技术与实战全解析

目录 一、简介DBSCAN算法的定义和背景聚类的重要性和应用领域DBSCAN与其他聚类算法的比较 二、理论基础密度的概念核心点、边界点和噪声点DBSCAN算法流程邻域的查询聚类的形成过程 参数选择的影响 三、算法参数eps&#xff08;邻域半径&#xff09;举例说明&#xff1a;如何选择…

2021-2023神经辐射场(NeRF)118篇顶会论文合集(已分类整理)

有没有发现最近神经辐射场相关话题又有点爆了&#xff1f; 其实NeRF一直都挺火的&#xff0c;相关论文在Google Scholar上引用量已经超过6000次&#xff0c;每年顶级视觉会议如CVPR、ICCV、ECCV等都有大量关于神经辐射场的高质量工作被接受。许多科研机构和公司比如微软、Face…

使用RTSP接入安防监控EasyCVR平台,如何配置系统参数以减少起播时间?

安防视频监控/视频集中存储/云存储/磁盘阵列EasyCVR平台可拓展性强、视频能力灵活、部署轻快&#xff0c;可支持的主流标准协议有国标GB28181、RTSP/Onvif、RTMP等&#xff0c;以及支持厂家私有协议与SDK接入&#xff0c;包括海康Ehome、海大宇等设备的SDK等。平台可拓展性强、…