EditText可以在xml中设置digits属性来限制用户的输入内容。如下面可以限制用户只输入数字

android:digits="1234567890"

那么在Java代码中该如何设置呢?

EditText是没有setDigits方法的。那么我们就从源码上看一下它是怎么从xml属性中获取值,然后使其生效的。

EditText是继承了TextView,digits属性是在TextView中获取并生效的。

定义一个CharSequence对象

1

从xml属性中获取digits值并附给上面的对象

2

用digits给TextView的Editor初始化一个KeyListener

3

这里源码中并没有直接给TextView设置digits属性,而是使用了Editor来进行了限制。那么Editor是什么呢?

源码中进行的解释是这样的:TextView用来处理可编辑文本的帮助类(个人直译,可能不准哈,能明白意思就ok)

Helper class used by TextView to handle editable text views.

也就是说因为EditText继承了TextView。EditText中的编辑的文本并不是在EditText中进行处理的,而是由其父类TextView通过创见了一个Editor用来控制。这里就不对Editor进行过多的解释,咱们的目的是想看看到底java代码中是怎么设置digits的嘛,大方向不能乱。

上面的源码看到是给Editor设置了keyListener,从而实现digits属性的。这个KeyListener不仅可以设置digits属性,还可以设置

* @attr ref android.R.styleable#TextView_numeric

* @attr ref android.R.styleable#TextView_digits

* @attr ref android.R.styleable#TextView_phoneNumber

* @attr ref android.R.styleable#TextView_inputMethod

* @attr ref android.R.styleable#TextView_capitalize

* @attr ref android.R.styleable#TextView_autoText

不过这里我们只关心digits

幸运的是在TextView有直接设置KeyListener的方法,也就算说我们可以参照源码那样,直接setKeyListener来设置digits属性

editText.setKeyListener(DigitsKeyListener.getInstance("0123456789"));

总结

源码是最好的参考资料,如果错误,欢迎大家指正!

java digit_EditText在java代码中设置digits属性相关推荐

  1. android java style_Android 在Java代码中设置style属性--使用代码创建ProgressBar对象

    强烈推荐: 在andriod开发中,很大一部分都要与资源打交道,比如说:图片,布局文件,字符串,样式等等.这给我们想要开发一些公共的组件带来很大的困难,因为公共的组件可能更愿意以jar包的形式出现.但 ...

  2. android在代码中设置margin属性

    一般常用的是在布局文件中设置margin属性,如: <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/ ...

  3. Android如何在java代码中设置margin

    Android如何在java代码中设置margin,也就是组件与组件之间的间距. 代码中设置: LinearLayout.LayoutParams params = new LinearLayout. ...

  4. java.library.path属性在代码中设置不生效问题

    http://www.blogjava.net/gembin/archive/2008/10/29/237377.html from http://daimojingdeyu.blogbus.com/ ...

  5. android中在java代码中设置Button按钮的背景颜色

    android中在java代码中设置Button按钮的背景颜色 1.设置背景图片,图片来源于drawable: flightInfoPanel.setBackgroundDrawable(getRes ...

  6. 详解Spring中的CharacterEncodingFilter--forceEncoding为true在java代码中设置失效--html设置编码无效...

    在项目中有很多让人头疼的问题,其中,编码问题位列其一,那么在Spring框架中是如何解决从页面传来的字符串的编码问题的呢?下面我们来看看Spring框架给我们提供过滤器CharacterEncodin ...

  7. java程序阅读题6,阅读以下说明和java程序,填补代码中的空缺(1)~(6),将解答填入答题纸的对 - 信管网...

    阅读以下说明和Java程序,填补代码中的空缺(1)-(6),将解答填入答题纸的对应栏内. [说明] 很多依托扑克牌进行的游戏都要先洗牌.下面的Java代码运行时先生成一副扑克牌,洗牌后再按顺序打印每张 ...

  8. android 动态设置margin,android 代码中设置margin

    场景:Android怎么在java代码中设置margin Android如何在java代码中设置margin 原创帖,转发请注明出处:http://thierry-xing.iteye.com/blo ...

  9. 1、代码中设置编码、编辑器中设置Python的编码

    1Python中文编码 1.1代码中设置编码 Python中默认的编码格式是ASCII格式,在没有修改编码格式时无法正确打印汉字,所以在读取中文的时候会报错. 解决办法为只要在文件开头加入 # -- ...

  10. Android在代码中设置drawableLeft(Right/Top/Bottom)

    根据业务的需要,要在代码中设置控件的drawableLeft,drawableRight,drawableTop,drawableBottom属性. 我们知道在xml中设置的方法为: android: ...

最新文章

  1. 空调能窃听插座能放火?物联网成了“危”联网
  2. 大商超的2020:转型、收紧、试新
  3. java bean spring_Java bean与Spring、Spring MVC关系
  4. 安卓案例:联选系部与专业
  5. Flask Jinja2模板
  6. JS for循环 if判断、white循环。小练习
  7. rs485接收中断函数使能_RS485通讯几种常见问题
  8. 支持中英文和国旗的android国家代码/国际电话区号选择器
  9. 第007篇:易康(eCognition)中实现分类的继承
  10. 基于C++实现的一种通用Base编解码器(Hex(Base16)/Base32/Base64)
  11. ios15验证失败因为你不在连接互联网
  12. WIN10系统蓝屏解决方法
  13. 北大计算机复试被刷经历,为什么那么多高分被刷?复试真的有黑幕吗?
  14. go 学习笔记之值得特别关注的基础语法有哪些
  15. 关于软考证书专项扣除填报抵扣个税
  16. yum完全配置及createrepo详解
  17. 【设计模式】Builder模式
  18. 如何用自己电脑架设服务器!自助建站将不再是梦想
  19. imagecreatefromjpeg():gd-jpeg:JPEG
  20. python应用seo_SEO快排技术和应用技术编程大全

热门文章

  1. MindMaster Pro 7.2中文版 — 亿图思维导图
  2. 支付网关清算及退款流程
  3. 数据库MySQL与可视化界面 SQLYog 安装教程
  4. 图解深度学习-三种梯度下降法可视化(BGD,SGD,MBGD)
  5. 图解深度学习-梯度下降法优化器可视化(SGD, Momentum,Adam, Adagrad and RMSProp)
  6. DEA模型中的CCR模型
  7. 完美可用-DirectX修复工具增强版DirectX Repair
  8. 用拉普拉斯变换求零状态响应_什么是UPS?为什么用UPS?关于UPS电源的知识都在这里!...
  9. Eclipse ADT插件和主题
  10. Android Jetpack组件之App Startup,源码+原理+手写框架