首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

EditText上的安卓十进制掩码从右至左填充

是一种在安卓开发中常用的技术,用于限制用户在输入框中输入的内容格式。该掩码通常用于要求用户输入特定格式的数据,例如电话号码、身份证号码等。

具体实现该掩码的方法是通过监听EditText的输入事件,在输入过程中根据设定的规则对输入的内容进行处理和格式化。对于十进制掩码,从右至左填充意味着输入的内容从最右边开始填充,直到最左边。

以下是一个示例的十进制掩码的实现过程:

  1. 首先,创建一个TextWatcher对象,并将其绑定到EditText上,以监听输入事件。
代码语言:txt
复制
EditText editText = findViewById(R.id.editText);
editText.addTextChangedListener(new TextWatcher() {
    // 实现TextWatcher的三个方法
    @Override
    public void beforeTextChanged(CharSequence s, int start, int count, int after) {
        // 在文本改变之前的操作
    }

    @Override
    public void onTextChanged(CharSequence s, int start, int before, int count) {
        // 在文本改变时的操作
    }

    @Override
    public void afterTextChanged(Editable s) {
        // 在文本改变之后的操作
        applyDecimalMask(s);
    }
});
  1. 在afterTextChanged方法中,实现十进制掩码的逻辑。可以使用StringBuilder来构建新的格式化后的字符串。
代码语言:txt
复制
private void applyDecimalMask(Editable s) {
    // 移除之前的格式化字符
    String text = s.toString().replaceAll("[^0-9]", "");

    // 从右至左填充掩码
    StringBuilder maskedText = new StringBuilder();
    int length = text.length();
    int index = 0;
    while (index < length) {
        // 每三个字符后添加一个掩码字符
        if (index > 0 && (length - index) % 3 == 0) {
            maskedText.append('.');
        }
        maskedText.append(text.charAt(index));
        index++;
    }

    // 更新EditText的内容
    editText.removeTextChangedListener(this);
    editText.setText(maskedText.toString());
    editText.setSelection(maskedText.length());
    editText.addTextChangedListener(this);
}

在上述代码中,我们使用replaceAll方法将输入文本中的非数字字符移除,然后使用StringBuilder从右至左填充掩码字符。每三个字符后添加一个掩码字符(这里使用'.'作为掩码字符),最后将格式化后的字符串设置回EditText中。

这种十进制掩码的应用场景包括需要用户输入金额、数量、身份证号码等需要特定格式的数据的场景。通过限制用户输入的格式,可以提高输入数据的准确性和一致性。

腾讯云相关产品中,可以使用腾讯云移动直播(https://cloud.tencent.com/product/mlvb)来实现音视频直播功能,腾讯云云服务器(https://cloud.tencent.com/product/cvm)来提供稳定可靠的服务器运维服务,腾讯云数据库(https://cloud.tencent.com/product/cdb)来存储和管理数据,腾讯云云函数(https://cloud.tencent.com/product/scf)来实现无服务器的后端开发,腾讯云人工智能(https://cloud.tencent.com/product/ai)来提供各类人工智能相关的服务等。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Android自定义EditText:手把手教你做一款含一键删除&自定义样式SuperEditText

、下、设置图标(相当于android:drawableLeft="" android:drawableRight="") // 备注:传入Drawable对象必须已经setBounds...、下、设置图标 // 与setCompoundDrawables区别:setCompoundDrawablesWithIntrinsicBounds()传入Drawable宽高...、下、设置图标(相当于android:drawableLeft="" android:drawableRight="") // 备注:传入Drawable对象必须已经setBounds...、下、设置图标 // 与setCompoundDrawables区别:setCompoundDrawablesWithIntrinsicBounds()传入Drawable宽高...下一篇文章我将继续进行一些 简单 & 实用自定义View实例讲解,有兴趣可以继续关注Carson_Ho开发笔记 ---- 请帮顶 或 评论点赞!因为你鼓励是我写作最大动力!

1.8K30

Android训练课程(Android Training) - 构建你第一个应用

构建你第一个应用(app) 欢迎来到开发! 这个课程教你如何构建你第一个应用。你讲会学到如何去创建一个工程和启动一个可以调试应用版本。...开发包SDK工具可以很容易创建一个由默认项目文件夹和文件组成项目。...在真实设备运行 如果你拥有一个动力设备,在这里展示了你如何安装和启动你应用: 1.使用USB线将你设备插入到你开发机器(译者注:可能是电脑),如果你使用window是开发,你可能需要为你设备安装适当...2.在你设备启用USB debugging(USB调试)模式 在很多运行在3.2或者更旧版本设备,你可以在选项设置里找到: 设置>应用程序>开发者 在4.0或者更新一些版本,他存在于...如果你使用"match_parent"来代替,这时 EditText元素将会填充满整个屏幕,因为它将会匹配它父布局LinearLayout尺寸。更多信息请阅读 Layouts 指南。

2.2K00
  • Xposed截获 Android手机QQ密码

    0x00 前言    Xposed框架是一款修改系统框架服务软件,通过它许多功能强大模块得以实现,且不冲突地同时运作,自从Xposed框架发布以来,手机可玩性日益激增,最近很闲很蛋疼,研究下截获...反编译qq搜索关键字符:"请输入密码",定位到如图1所示地方: image.png           图1 图1可看出我们想要关键字符串对应ID 请输入帐号 0x7f0a11f6   十进制...2131366390 请输入密码 0x7f0a11f9   十进制 2131366393 b.继续搜索ID值” 0x7f0a11f9  ”,定位到如图2所示地方: image.png 我们到...smali\com\tencent\mobileqq\activity\logInActivity.smali去看看,转换成java代码如图3所示: image.png 图3可以看出它最终也会调用...getText函数,所以差想这个控件是不是继承自EditText,所以只需要HOOK类android.widget.EditTextgetText函数并判断是否为密码框即可。

    2.8K10

    Python中关于list、tuple、

    split(seq=None,maxaplit=)是进行切割,可以指定分割字符串,在不指定情况下默认是空白字符分割符,还可以指定分割次数,-1表示遍历整个字符串         rsplit...(seq=None,maxsplit=-1)是进行切割,用法同split一样。         ...       partition(seq):,遇到分割符就把字符串分割为两部分,返回头,分隔符,尾三部分三元组,没有找到分割符,就返回头,空分割,空尾三元组。...必须指定seq        Rpartition(seq):,遇到分割符就把字符串分割成两部分,和partition用法一样。...zfill(width) 返回一个字符串,左边ASCII ‘0’填充字符串,居,左边0填充

    79810

    明日起“大数据杀熟”禁令实施,十一放假前我们做了一个小调查……

    图 | :iOS A账号、iOS B账号、B账号 结果:同是iOS设备,两个账号之间存在10元价格差距;同一个账号,iOS设备与设备之间价格差距为39元。...测验二:某程平台,统一场所,统一目的地,测试内容为同一设备不同账号,以及同一账号在不同设备呈现结果。 图 | :iOS A账号、A账号、B账号(新) 结果:价格无差别。...此外,针对机票价格,镁客网也进行了比对,仅平台之间存在差距,同一个平台中,不管是设备还是iOS设备,亦或是不同账号之间,均不存在差价。...目前,“大数据杀熟”主要呈现出三种“套路”: · 根据不同设备进行差别定价,主要体现为同一商品,苹果与设备定价不同; · 根据用户消费时所处不同场所,比如距离越远价越高等等; · 根据用户消费频率差异...这一切问题背后,是大数据与算法在操控。 事实,大数据最初被运用于消费行业目的并非是“杀熟”,是为了更好地进行营销,在这一点,大数据智能营销的确做到了。

    54610

    C++移位运算符

    为什么不是5呢 10二进制表示为1010,按位取反应该为0101,也就是十进制5,为什么会得出-11?...~ 反转操作符:将位容器中所有位都反转,1变为0,0变为1。 > 按位右移操作符:exp>>n,将容器中所有的位向右移n位,空出位用0填充。 |=,&=,^= 分别对应|&^三种操作符复合操作符。...3.常用操作 这里我们假设有一个resultunsigned int变量用来储存32个学生成绩(通过和不通过分别用0和1),这样result就有33位(result0开始计算位数,...bitdet bits(string&) 总结:bitset模板类中类型参数传递容器位数,而构造函数参数通过一个int或一个string&值来初始化容器中相应值。

    66810

    女朋友居然想让我使用Android Studio和夜神模拟器来帮她浏览各位大佬文章!

    最近某学妹在众多大佬栽培下学到了不少东西, 虽然学妹没等到,但是等到可爱女朋友来找我帮忙了,她居然说Android Studio自带真机不好用,还想让我帮她在虚拟机上浏览各位大佬文章,看来女朋友已经不限于使用自己电脑或手机来学习我文章中知识了...然后上来就是一个正蹬一个右边腿一个刺拳,“啪”电脑就打开了! 上来我就打开了Android Studio就要手写代码,女友说:“这不行,真机调试老出问题,不能用自带真机!”...安装好夜神模拟器以后却发现,这模拟器在Android Studio运行选项不显示,找不到设备...这下可把女友急坏了! 但是这种小事情怎么能难得住我呢?...最后还用了几行代码,做了一个小控件,帮她实现了在虚拟机上浏览各位大佬小愿望: activity_main.XML文件代码: <?...; public class MainActivity extends AppCompatActivity { EditText htmlUrl; Button htmlUrl_bt

    52720

    Android Studio配置夜神模拟器异常解决

    最近某学妹在众多大佬栽培下学到了不少东西, 虽然学妹没等到,但是等到可爱女朋友来找我帮忙了,她居然说Android Studio自带真机不好用,还想让我帮她在虚拟机上浏览各位大佬文章,看来女朋友已经不限于使用自己电脑或手机来学习我文章中知识了...然后上来就是一个正蹬一个右边腿一个刺拳,“啪”电脑就打开了! 上来我就打开了Android Studio就要手写代码,女友说:“这不行,真机调试老出问题,不能用自带真机!” 我一听就惊了!...安装好夜神模拟器以后却发现,这模拟器在Android Studio运行选项不显示,找不到设备...这下可把女友急坏了! 但是这种小事情怎么能难得住我呢?...最后还用了几行代码,做了一个小控件,帮她实现了在虚拟机上浏览各位大佬小愿望: activity_main.XML文件代码: <?...; public class MainActivity extends AppCompatActivity { EditText htmlUrl; Button htmlUrl_bt

    91810

    谷歌源生bug发现与解决记录

    最近发现了谷歌源生一个bug,在这里记录一下。 操作步骤: 1、进入拨号界面,输入 *#*#4636#*#* ,然后会进入手机测试界面。...并且log中也可以看出是 WifiAPITest 里出现了问题。另外现象来看,导致 crash 操作也是在WifiAPITest 中,那我们看代码。...代码中可以看到, EditText 中输入内容后,要调用 Integer.parseInt() 来把string类型转换为int类型。...view to get user input final EditText input = new EditText(getPrefContext()); alert.setView...alert.show(); } /libcore/ojluni/src/main/java/java/lang/Integer.java 看 parseInt 函数,可以看到当数据不符合规范时会抛出异常,比如你输入是汉字或者十进制字母

    51130

    【NLP】Facebook提出预训练模型BART

    BART 使用基于 Transformer 标准神经机器翻译架构,可泛化 BERT(具备双向编码器)、GPT(具备解码器)等近期出现预训练模型,尽管它非常简洁。...使用掩码符号替换文本段,从而破坏文本。使用双向模型编码被破坏文本(),然后使用自回归解码器计算原始文档似然()。...它是一个具备双向编码器(对被破坏文本使用)和自回归解码器序列到序列模型。至于预训练,研究人员优化了原始文档负 log 似然。...token 掩码:按照 BERT 模型,BART 采样随机 token,并用掩码替换它们。 token 删除:输入中随机删除 token。与 token 掩码不同,模型必须确定缺失输入位置。 ?...图 2:向输入添加不同噪声变换。这些变换是可组合。 文本填充:采样多个文本段,文本段长度取决于泊松分布 (λ = 3)。用单个掩码 token 替换每个文本段。

    6.8K11

    多项NLP任务新SOTA,Facebook提出预训练模型BART​

    BART 使用基于 Transformer 标准神经机器翻译架构,可泛化 BERT(具备双向编码器)、GPT(具备解码器)等近期出现预训练模型,尽管它非常简洁。...使用掩码符号替换文本段,从而破坏文本。使用双向模型编码被破坏文本(),然后使用自回归解码器计算原始文档似然()。...它是一个具备双向编码器(对被破坏文本使用)和自回归解码器序列到序列模型。至于预训练,研究人员优化了原始文档负 log 似然。...token 掩码:按照 BERT 模型,BART 采样随机 token,并用掩码替换它们。 token 删除:输入中随机删除 token。与 token 掩码不同,模型必须确定缺失输入位置。 ?...图 2:向输入添加不同噪声变换。这些变换是可组合。 文本填充:采样多个文本段,文本段长度取决于泊松分布 (λ = 3)。用单个掩码 token 替换每个文本段。

    95620

    飞桨手势识别带你玩转神庙逃亡

    拍照方法实现 Android Camera是系统提供实现自定义相机功能官方支持库,采集模块封装了一系列相关调用方法,实现了连续抓拍存储及浮窗实时预览效果。...此外,对于没有自带摄像头设备(如嵌入式开发板),我们使用外接USB摄像头,并完成 USB摄像头驱动模块编写,实现了设备对外接摄像头调用及相关配置功能。 2....分别对应控制命令:无控制、、下、 重新设计并自己采集数据集示例,环境单一、手势符合游戏操作习惯: ? 分别对应控制命令:无控制、、下、 2....数据集增广、预处理示意图(:padding后原图为方形,中:随机裁剪,:随机旋转) 3....02 平板电脑端神庙逃亡游戏 03 嵌入式板+电视投屏端神庙逃亡游戏 总结 我们手势识别交互系统是面向人机交互嵌入式应用程序,用户仅需使用带有摄像头设备便可以利用手势实现对界面(游戏)控制。

    1.5K30

    2022年最新Python大数据之Python基础【四】

    正数索引:0开始,依次递增 负数索引:-1来时,依次递减 使用索引可以获取字符串中元素 字符串[元素索引] # 什么是字符串索引?...5、字符串查询 index:查找字符串中子字符串所在位置i,如果有该字符串,查询其第一次出现位置正数索引,否则报错。...find:查找字符串中子字符串所在位置i,如果有该字符串,查询其第一次出现位置正数索引,否则返回-1。...rindex:查找字符串中子字符串所在位置i,如果有该字符串,查询其第一次出现位置正数索引,否则报错。...rfind:查找字符串中子字符串所在位置i,如果有该字符串,查询其第一次出现位置正数索引,否则返回-1。 count:查询子字符串在指定字符串中出现次数。

    1.8K20

    Python3 String(字符串)

    (len)-1  负数下标       字符串中往左每个元素分配-1开始标号.最后一个下标为负长度-len  str[-4:-1]        负数下标依然是从左到右顺序打印  str...冒号左边是开始下标冒号右边是结束下标不写步长,步长默认为1  str[:3]        不写开始下标,默认开始下标为0  str[1:]        不写结束下标,默认结束下标为最后一位下标   字符串截取      Python字符串截取...:索引范围(0,长度-1),截取(-1,字符串开头)。...    - ljust()         - 返回一个源字符串对齐,并使用指定字符(默认风格)填充对应长度新字符串         - 语法             - 字符串序列.ljust...,语法和ljust()相同         - 返回一个原字符串居中,并使用空格填充长度 width 新字符串         - str.center(100,'填充符号')

    70800

    Android开发 - 样式和主题

    你不能用于继承内置样式。要想引用内置样式,比如TextAppearance,,你必须使用parent属性。...提供了一些内置资源,你可以使用这些预先定义好样式,而不用自己再重新写了。...较新版本为应用提供了额外可用样式,同时你可能想要使用它们在那些平台上运行,并且仍然和老版本保持兼容。...使用平台样式和主题 平台提供了很多样式和主题,供你在应用程序中使用。在 R.style 类里你可以找到可以用引用。...比如,在主题源代码中,你将找到一个声明 .在这些定义里,你将会看到所有的常常用到 ”被用于框架样式对话框属性“ 更多关于 样式和主题

    1.8K10

    数制

    计算机中最常见数制有二进制数制、八进制数值和十六进制数制,生活中最熟悉则是十进制数制,当然,十进制数制在编写代码时,常用于表示数值大小。 以十进制数制为例,介绍数制相关基本概念。...例如十进制整数520,,0数位是个位、2数位是十位,5数位是百位。 位数指的是数中数位个数。例如十进制整数520有三个数位,所以位数为3。...位权指的是数制中某一数位1所表示数值大小(所处位置权值)。例如,十进制整数520,,0位权是1,2位权是10,5位权是100。 计数单位指的是数值中对位权称谓。...对于十进制整数520,,0位权是1,计数单位是个,2位权是10,计数单位是十,5位权是100,计数单位是百,后面还有千、万、十万、百万、千万、亿、十亿、百亿、千亿……,这些都是计数单位。...时间,使用60进制,每60秒为一分钟,每60分钟为1小时。从小时到天则使用24进制,每24小时为1天。天到星期,采用是7进制,7天为1星期,月到年,采用是12进制,12个月为1年,等等。

    87920

    UE4:Android 平台开发实践指南

    image 在 “项目设置” 中找到 “平台” 选项,然后配置 “Android”,将这俩个栏目都设置为同意,接受SDK证书,以及填上包名称。...image image 在 Android SDK 中填上对应路径。 image PS:由于我是用 Mac,所以在路径配置和 Windows 不同。...Studio 自带升级功能,将项目升级 AndroidX。...C++ 代码被修改过了,所以需要重新打包项目,打包完成以后,在我们 Android Studio 跑起来,点击按钮,控制台中就会打印相应日志。...C++ 调用 Java 代码已经成功实现了,但是在上文中,我们新建一个第三方库内容还没有讲完,那就继续来讲如何去调用第三方库中函数方法。

    1.9K30

    Chrome加入自定义手势控制

    也有其独特手势特性(比如左/划地址栏切换标签,下划菜单键弹出并选择菜单项等),但是深得"我国用户"喜爱/划控制页面后退/前进手势功能在却迟迟没有在Chrome上得到体现。...下面小苏就来说说如何为Chrome添加手势吧~ 解决方案:   以下内容适用于喜欢折腾Chrome重度用户(步骤重复性高并且比较复杂),手势功能基于应用:GMD手势控制(文末提供下载),并且要求手机获得...移除完成后,点击右下角"+"按钮进入手势添加界面,比如我们要添加一个屏幕左边缘划返回一页面的手势,可以如下设置:   手势选择:划   触点个数:1   起始区域:左侧边缘   操作:无   ...你可以异想天开,比如双指/划来向前/向后切换标签页,双指下划关闭标签,双指上划新建标签页等,由于GMD对手势高度定制性,你甚至可以绘制属于自己手势作为手势触发条件,或者对几种手势进行组合来作为手势触发条件...同样,GMD手势预置16种"浏览"动作,包括:"后退/前进/刷新/新建标签/新建隐身标签/关闭标签/一标签/下一标签/打开书签/添加为书签/页面内查找/打开历史记录/滚动页面顶部/滚动页面底部/滚动到上一页

    3.7K30

    Android开源库:手把手教你实现一个简单好用搜索框(含历史搜索记录)

    、下、设置图标(相当于android:drawableLeft="" android:drawableRight="") // 注1:setCompoundDrawablesWithIntrinsicBounds...X轴起点 y:组件在容器Y轴起点 width:组件长度 height:组件高度 } /** * 步骤3:通过监听复写EditText本身方法来确定是否显示删除图标...// getWidth():控件宽度 // getPaddingRight():删除图标图标右边缘EditText控件右边缘距离...总结 相信你一定会喜欢 这款简单 & 好用SearchView控件 已在Github开源:SearchView,欢迎 Star !...下一篇文章我将继续进行一些有趣自定义View实例讲解,有兴趣可以继续关注Carson_Ho开发笔记 更多简单好用开源库:简单 & 好用开源组件: 自定义EditText:手把手教你做一款含一键删除

    2.8K10

    Python中str字符串

    chars 切割符     查找字符  find(sub[,start[,end]])->int #在指定区间[ start,end),,查找字符串sub。...(从左到右切割)    sep切割符号,必须指定将指定字符切割成,头部,分割符,尾部三部分组成三元组;如果没有找到分割符,就只返回头部和2个空元素三元组。 ...空白位置使用fillchar填充。默认值为空格符号    width 总宽度fillchar 填充字符(不能是字符串)  zfill(width)->str #将指定字符按照width宽度居显示。...不够地方使用0填充    width:打印宽度,局,左边用0填充  ljust(width[.fillchar])->str #将字符对齐显示width长度,不够长度使用fillchar字节替代。...名称:点分四段十进制表示法ipv4地址【.format(*octets)】中*表示,将octets列表转换为对应长度元素

    1.3K30
    领券