相信小伙伴们都使用过Edittext这个android基础控件吧,用户可以输入内容的控件。用起来唯一可能比较麻烦的事,就是要做各种限制和统一标准。今天就来说说edittext输入金额一些标准和注意的地方吧。
首先我们必须了解输入钱数的一些基本准则。
1.只能输入数字和小数点
2.钱数一般保留两位小数。(保留整数的几乎不用做限制,这里就先不说了)
3.小数点不能开头,而且最多出现一次
4.以0开头的钱数,后面必须紧跟着小数点,如0.1,不能出现00.1、01、01.0等
(暂时能想到的输入规则就这些了,大家可以继续补充)
知道了规则,接下来就是showTime时刻了,亮出代码。
xml布局里的代码
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/activity_main" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context="com.dose.my_edittextinput_one.MainActivity"> <EditText android:id="@+id/et_input_money" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="" android:textColorHint="#c7c7c7" android:hint="请输入金额" android:textSize="16sp" android:background="@null" android:inputType="number|numberDecimal"/> </RelativeLayout>
为了改变edittext原来带下划线的背景,设置background=@null。这里非常重要的是设置输入类型number和numberDecimal,number:输入数字,numberDecimal:输入小数点。
activity里的代码,是让edittext实现监听文本变化的方法addTextChagedListener。
inputMoneyEt.addTextChangedListener(new TextWatcher() { @Override public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) { } @Override public void onTextChanged(CharSequence s, int start, int before, int count) { //输入的内容包含小数点 if (s.toString().contains(".")) { //小数点后面数字超过两位 if (s.length() - 1 - s.toString().indexOf(".") > 2) { s = s.toString().subSequence(0, s.toString().indexOf(".") + 3); inputMoneyEt.setText(s); inputMoneyEt.setSelection(s.length()); } } //输入内容以0开头 if (s.toString().startsWith("0") && s.toString().trim().length() > 1) { if (!s.toString().substring(1, 2).equals(".")) { inputMoneyEt.setText(s.subSequence(0, 1)); inputMoneyEt.setSelection(1); return; } } //输入内容以小数点开头 if (s.toString().startsWith(".")){ inputMoneyEt.setText(""); } } @Override public void afterTextChanged(Editable s) { } });
至此,edittext输入金额就完成,是不是很简单,欢迎大家一起交流。
我的简书地址:https://www.jianshu.com/u/71c0d9419cab点击打开链接