Android   发布时间:2022-04-28  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了android – 每个InputType常量的语义是什么?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
您可以将TextView的inputType设置为InputType中的一个值,以暗示输入的文本应该是人名,电话号码和& c.即使输入方法不遵循此提示,TextView也会使用KeyListener和/或TransformationMethod来确保只能输入相关字符,或者具有屏蔽密码等效果.即使标志不仅仅是提示:它们可以显着改变TextView的行为(最明显的例子是EditorInfo.TYPE_TEXT_FLAG_MULTI_LINE).

Google的文档对每个inputType的实际效果非常模糊.每种情况下实际允许哪些字符?如果有的话,这会因地区而异?即使没有记录的答案,并且它可能在版本之间发生变化,我仍然想知道预期的行为.

解决方法

您可以通过检查* KeyListener类的源来找到它,但当然可以在不@R_28_11197@中或通过制造商或操作符自定义更改.以下内容基于AOSP 4.3来源.这些只是每种类型对 Android本身的影响:输入方法还使用类型作为提示来更好地预测用户可能键入的内容.例如,尽管TYPE_TEXT_VARIATION_PERSON_NAME仅具有禁用拼写检查的效果,但IM可能会通过从常用名称字典而不是语言字典中自动完成来响应此类型.

为了试验输入类型和IME选项,我编写了一个快速应用程序,允许您从GUI中的列表中选择它们,因此您不必编辑XML布局并重建应用程序来执行此操作.如果您想了解更多信息,或查看它们与给定IM应用程序的交互方式,请访问download IM prove free from Google Play.

TYPE_NULL

这个实际记录在案:

这使得它听起来像是你没有编辑文本的情况,但按下IM上的一个键会直接执行某些操作.但实际上它完全隐藏了Im.从应用程序的角度来看,您几乎从不想要这样:如果您只想让硬件键盘输入文本,请设置它.

从IM的角度来看,你会将这种类型传递给onStarTinput很多,通常当Android即将隐藏IM时,因为不同的活动即将到来.您希望快速响应此输入类型.它可能有两个原因可以解决这个问题,但参与设计的人必须确认原因: –

>可能是让IM知道编辑在该窗口中完全完成(与onFinishInput不同,这仅仅意味着IM被隐藏),因此它可以释放用于字典等的内存,直到编辑重新开始.
>它可能是允许硬件键盘使用箭头键进行滚动,菜单加速键等等的一部分,即使没有发生文本输入也是如此.

数字类型

TYPE_CLASS_numbER为您提供数字0-9.此外,添加TYPE_numbER_FLAG_SIGNED可让您拥有或 –,但仅作为第一个字符.您可以添加TYPE_numbER_FLAG_decimal.在任何位置,但只有一次.您可以同时使用signed和decimal.据我所知,这不是本地化的,因此即使对于语言环境,允许的字符也是相同的.是千位分隔符,是小数点,还是具有不同数字字符的区域设置.

TYPE_CLASS_PHONE允许您使用数字0-9,以及#* – (),/ N中的任何一个.和空间.您可以按任意顺序和任意次数拥有这些字符:没有格式化检查.

TYPE_CLASS_datetiR_4_11845@E | TYPE_datetiR_4_11845@E_VARIATION_DATE允许您使用数字0-9以及任何/ – ..再次,没有额外的格式检查,因此您可以按任何顺序使用它们.

TYPE_CLASS_datetiR_4_11845@E | TYPE_datetiR_4_11845@E_VARIATION_TIME允许您输入数字0-9以及:和任何放大器(用于写“am”或“pm”,但您可以按任何顺序和位置使用它们).有点不正常,你不能有空间或. “下午3点”或“下午2点”甚至是“2.30”.同样,它似乎没有本地化.

TYPE_CLASS_datetiR_4_11845@E | TYPE_datetiR_4_11845@E_VARIATION_NORMAL可以获0-9以及:/ –,空格和放大器.这显然不包括.即使它在约会中被允许.

基于上述观察,我不能说我建议使用上述任何一类.他们似乎都有重大缺席并阻止本地化.以上是唯一具有字符限制的类.

TYPE_CLASS_numbER | TYPE_numbER_VARIATION_password按照您的预期执行:它使用TransformationMethod来隐藏键入的字符.

文字类型

在TYPE_CLASS_TEXT中,设置TYPE_TEXT_VARIATION_EMAIL_ADDRESS或TYPE_TEXT_VARIATION_EMAIL_SUBjeCT按下回车键将焦点移动到下一个字段,而不是插入换行符.

TYPE_TEXT_VARIATION_FILTER将阻止输入方法进入全屏(提取)模式.

TYPE_TEXT_VARIATION_password具有明显的效果:它使用TransformationMethod来模糊键入的字符. TYPE_TEXT_VARIATION_VISIBLE_password仍然使用TransformationMethod来防止文本被复制

如果未设置TYPE_TEXT_FLAG_NO_SUGGESTIONS,则以下所有文本变体都允许拼写检查.也就是说,使用非TYPE_CLASS_TEXT的类或不在此列表中的变体具有与设置TYPE_TEXT_FLAG_NO_SUGGESTIONS(稍后描述)相同的效果.

> TYPE_TEXT_VARIATION_NORMAL
> TYPE_TEXT_VARIATION_EMAIL_SUBjeCT
> TYPE_TEXT_VARIATION_LONG_messaGE
> TYPE_TEXT_VARIATION_SHORT_messaGE
> TYPE_TEXT_VARIATION_WEB_EDIT_TEXT

InputType.TYPE_TEXT_FLAG_MULTI_LINE的存在与否具有非明显的副作用.如果类型类不是TYPE_CLASS_TEXT,则总是好像没有设置标志,并且TextView进入单行模式.将行或maxLines设置为1只会影响文本的显示方式:它不会启动单行模式.

在单线模式下: –

> ellipsize选项认为结束
>按Enter键执行“编辑器操作”或将焦点移动到下一个字段(就像上面的电子邮件地址或主题一样);否则,它会插入换行符
>仅当未设置TYPE_TEXT_FLAG_IME_MULTI_LINE时,按Tab键才会将焦点移动到下一个字段;否则它会插入制表符
> imeOptions可以包含一个“编辑器动作”来替换软键盘上的回车键;在多行模式下,TextView会将IME_FLAG_NO_ENTER_ACTION添加到imeOptions
> maxLines自动设置为1
>向字段添加换行符(例如使用setText)无效,并且回车符替换为零宽度空格(U FEFF)

TYPE_TEXT_FLAG_CAP_ *使用TextUtils.getCapsMode来决定是否将每个字符大写.这些规则有点巴洛克式,并且不是区域敏感的. AFAICT,仅在键盘中启用相应设置时才会生效.

设置TYPE_TEXT_FLAG_AUTO_CORRECT时,空格,制表符,换行符,任何Unicode“结束标点符号”或任何,.!?“将触发前一个单词的自动更正(在此上下文中,这是Unicode字母和撇号的最长序列如果整个单词没有更正,则继续以较短的子序列重试.更正来自固定的系统资源com.android.internal.R.xml.autotext,并且与任何配置的拼写检查器分开.

TYPE_TEXT_FLAG_NO_SUGGESTIONS(或前面列出的文本变体)会停止拼写检查的文本.这可以防止显示拼写检查建议列表,并且还可以停止突出显示拼写错误的单词.如果选择,输入方法仍然可以提供完成.

其他奇怪的

长按TextView通常会选择被点击的单词,但如果输入类型是以下之一,则会选择所有文本: –

> TYPE_CLASS_numbER> TYPE_CLASS_PHONE> TYPE_CLASS_datetiR_4_11845@E(任何变体)> TYPE_TEXT_VARIATION_URI> TYPE_TEXT_VARIATION_EMAIL_ADDRESS> TYPE_TEXT_VARIATION_WEB_EMAIL_ADDRESS> TYPE_TEXT_VARIATION_FILTER

大佬总结

以上是大佬教程为你收集整理的android – 每个InputType常量的语义是什么?全部内容,希望文章能够帮你解决android – 每个InputType常量的语义是什么?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。