仿苹果数字键盘以及判断信用卡有效期的Editext

这次带来一个小小的信用卡有效期规则的Editext,额外赠送内置数字键盘的开发

首先来看下需求: 1) 月份数字: λ 数字输入0:后一位数字可输入1-9,输入1则展示01/(注意斜杠展示在界面),点击0界面没有反应 λ 数字输入1:后一位数字可输入0、1、2,输入0则展示10/(注意斜杠展示在界面),点击3-9界面没有反应 λ 数字输入2:则展示02/(注意斜杠展示在界面), λ 数字输入3-9,展示逻辑同2 2) 年份数字: λ 数字输入1、2、3,点击其他数字,界面无反应 λ 当输入数字1时: 继续输入数字6(当前年份为16年,2017年时即可输入7),则校验月份是否>=10,如果是,可以输入,如果不是,则不可输入 可继续输入数字7/8/9,0-5不可输入 λ 当输入数字2时:可继续输入数字0-9 λ 当输入数字3时:可继续输入数字0、1;也就是年份最大数字为31年(当前年份+15年,2017年时即可输入32)

不可以输入4-9和0,输入界面无反应

这是DEMO完成时候的预览

用到项目里面也是和ok的啊,

所以我们要写一个自定义的带清除的的Editext但是,还要加入额外的判断逻辑,加入清除按钮简单就一笔带过。

自定义的Editext在构造方法中,获取系统的drawable数组,并且难道我们要设置的图片

调动这个设置drawable区域的API,把自定义的drawable显示

Editext的回调,判断显示icon的时机

由于我们添加的删除图标是一个drawable,所以我们只能重写onTouch模拟点击事件,进行清空editext文本内容的操作

判断手指抬起的时候,在UP中,用手指抬起的坐标和view的宽度-图片的宽度的坐标做个对比,如果大于这个值,说明在图片的点击区域内,那么我们清空,文本内容,其实就是给文本设置 空字符串就行了!

下面我们关键来看下那个监听里面应该如何对于上面的条件进行判断

  • 自定义文本监听
  • 在文本监听的构造中获取,当前的时间限制
  • 解析当前的时间和限制时间,获取月份和年限的限制

在监听里面逐条进行判断

注释已经很详细了,下面源代码连接送上,而且有菜单,里面有一个仿iPhone的自定义数字键盘,可以屏蔽掉系统键盘的哦,赶紧下载试试吧

下载地址:https://github.com/GuoFeilong/CreditKeyboard

原文发布于微信公众号 - 非著名程序员(non-famous-coder)

原文发表时间:2016-09-27

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏DeveWork

WordPress 中部署真正的懒加载(Lazy Load)

不少WordPress 主题(包括DeveWork.com目前的主题)都有部署jquery 插件“懒加载”(Lazy Load),但其实很多都不能产生真正的懒加...

2177
来自专栏逸鹏说道

Jupyter-Notebook版的博客园美化

文章汇总:https://www.cnblogs.com/dotnetcrazy/p/9160514.html

1472
来自专栏知道一点点

走进AngularJs(二) ng模板中常用指令的使用方式

  通过使用模板,我们可以把model和controller中的数据组装起来呈现给浏览器,还可以通过数据绑定,实时更新视图,让我们的页面变成动态的。ng的模板真...

1432
来自专栏JetpropelledSnake

Vue学习笔记之Vue的使用

我们能发现,引入vue.js文件之后,Vue被注册为一个全局的变量,它是一个构造函数。

893
来自专栏SHERlocked93的前端小站

Vue源码阅读 - 文件结构与运行机制

vue已是目前国内前端web端三分天下之一,同时也作为本人主要技术栈之一,在日常使用中知其然也好奇着所以然,另外最近的社区涌现了一大票vue源码阅读类的文章,在...

1193
来自专栏知道一点点

angularjs中常用的ng指令介绍【转载】

原文:http://www.cnblogs.com/lvdabao/p/3379659.html

1153
来自专栏salesforce零基础学习

salesforce lightning零基础学习(二) lightning 知识简单介绍----lightning事件驱动模型

看此篇博客前或者后,看一下trailhead可以加深印象以及理解的更好:https://trailhead.salesforce.com/modules/lex...

1330
来自专栏zhangdd.com

ceph性能测试

该工具的语法为:rados bench -p <pool_name> <seconds> <write|seq|rand> -b <block size> -t...

2022
来自专栏前端达人

2018年最全面的前端面试题都在这里了

意义:根据内容的结构化(内容语义化),选择合适的标签(代码语义化)便于开发者阅读和写出更优雅的代码的同时让浏览器的爬虫和机器很好地解析。 注意: 1.尽可能少的...

4K6
来自专栏CodingBlock

Android开发必知--使用View.setId的正确姿势

  这两天在写一个柱状图的自定义控件,用的直接继承ViewGroup的方式实现的,我们都知道,这是自定义控件里面最简单的一种了,有时间写个总结分享一下。这里我想...

24410

扫码关注云+社区

领取腾讯云代金券