号码格式化文本框-FormatEditText

FormatEditText

FormatEditText可以用来当做号码格式化文本输入框使用, 可以用来作为格式化手机号码、格式化身份证号码、格式化银行卡号码等.

  • 例如:指定模式为MODE_SIMPLE, 样式为344, 占位符为-, 手动依次输入13012345678, 那么最终会格式化为130-1234-5678, 且中间删除更改会自动补位.
  • 例如:指定样式为MODE_COMPLEX, 样式为***-****-****, 标记符为*, 手动依次输入13012345678, 那么最终会格式化为130-1234-5678, 且中间删除更改会自动补位.

特性:

  • 支持配置格式化样式
  • 支持粘贴且光标自动跟随
  • 自动填充删除占位符

演示程序

下载 Demo.apk

快照

使用

Gradle
repositories {  
    ...
    maven { url 'https://jitpack.io' }  
}

dependencies {  
    compile 'com.github.dkzwm:FormatEditText:0.0.5.3'
}
在Xml中配置
//组合模式
<me.dkzwm.widget.fet.FormattedEditText
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    app:fet_formatStyle="+(**)-***-****-****"
    app:fet_mark="*"
    app:fet_mode="mode_complex"/>

//简单模式
<me.dkzwm.widget.fet.FormattedEditText
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    app:fet_formatStyle="344"
    app:fet_mode="mode_simple"
    app:fet_placeholder=" "/>
Java代码配置
//简单模式
FormattedEditText editText = findViewById(R.id.formattedEditText);
editText.setMode(FormattedEditText.MODE_SIMPLE);
editText.setFormatStyle("344");
editText.setPlaceholder(" ");(输入13012345678,格式化后为:130 1234 5678)
//组合模式
editText.setMode(FormattedEditText.MODE_SIMPLE);
editText.setMark("*");
editText.setFormatStyle("+(**)-***-****-****");(输入8613012345678,格式化后为:+(86)-130-1234-5678)
Xml属性
名称类型描述
fet_modeenum指定模式,支持MODE_SIMPLE(简单模式)和MODE_COMPLEX(组合模式)
fet_formatStylestring指定格式化样式,当fet_modeMODE_SIMPLE时,格式只能是纯数字, fet_modeMODE_COMPLEX时,格式为任意格式且需要指定fet_mark属性,如果不指定那么默认为*
fet_markstring指定标记符,仅当fet_modeMODE_COMPLEX时需要设置,且长度必须为1(默认:*
fet_placeholderstring指定占位符,仅当fet_modeMODE_SIMPLE时需要设置,且长度必须为1(默认:

License

--------

    Copyright (c) 2017 dkzwm

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
### 实现步骤与示例代码: 假设我们正在创建一个简单的库存管理系统页面,用户可以在左侧的文本框中输入货物的数量,并观察右侧两个区域是如何反映输入结果的。左侧第一个文本框使用了双向绑定,第二个文本框使用了单向绑定,而插值表达式用于实时展示当前的货物数量。 首先,我们需要引入 Vue.js 库并设置基本结构: ```html <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>库存管理示例</title> <script src="https://cdn.jsdelivr.net/npm/vue@2"></script> </head> <body> <div id="inventoryApp"> 货物数量:<input type="text" v-model.number="stockQuantity" placeholder="双向绑定" /><br/> 货物数量:<input type="text" v-model="enteredQuantity" placeholder="单向绑定" /><br/> 货物数量:{{ displayQuantity }} </div> <script> new Vue({ el: '#inventoryApp', data: { stockQuantity: 0, enteredQuantity: '' }, methods: { updateStockQuantity(newQty) { if (isNaN(newQty)) return; this.stockQuantity = newQty; this.displayQuantity = this.stockQuantity; // 利用插值表达式展示数值 } } }); </script> </body> </html> ``` ### 解释: 1. **双向绑定**: - 第一个文本框使用了 `v-model.number`,这使得 Vue 知道这是一个数字输入,并将其与 `data` 属性 `stockQuantity` 进行双向绑定。这意味着用户在该字段中输入的任何东西都会更新到 `stockQuantity` 和 `displayQuantity` 展示区。 2. **单向绑定**: - 第二个文本框使用了标准的 `v-model`,同样作为输入处理,但它仅从 Vue 的数据属性读取和更新,而不反向操作。因此,其值不会影响 `stockQuantity` 或 `displayQuantity`。 3. **插值表达式**: - `<p>{{ displayQuantity }}</p>` 部分使用了插值表达式 `{{ displayQuantity }}` 来实时显示库存量。每当 `stockQuantity` 更新时,这个表达式就会反映出最新的库存数量,实现了即时更新的效果。 ### 相关问题: 1. **如何验证双向绑定是否成功工作?** - 您可以通过尝试在双向绑定的文本框中输入数值并查看下方显示的库存数量是否同时更新。 2. **在实际项目中,何时应该使用单向绑定而不是双向绑定?** - 单向绑定更适用于需要基于用户输入来更新数据,但又不想将数据回传给用户的场景。例如,输入验证、搜索过滤等领域。 3. **解释插值表达式的用途是什么?** - 插值表达式 `{{ expression }}` 用于展示 Vue 数据模型中的变量值。在上述示例中,它用于实时显示库存的当前数量,让使用者能够直观了解当前库存状况。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值