Edittext使用的那些事儿--输入金额

      相信小伙伴们都使用过Edittext这个android基础控件吧,用户可以输入内容的控件。用起来唯一可能比较麻烦的事,就是要做各种限制和统一标准。今天就来说说edittext输入金额一些标准和注意的地方吧。

       首先我们必须了解输入钱数的一些基本准则。

       1.只能输入数字和小数点

       2.钱数一般保留两位小数。(保留整数的几乎不用做限制,这里就先不说了)

       3.小数点不能开头,而且最多出现一次

       4.以0开头的钱数,后面必须紧跟着小数点,如0.1,不能出现00.1、01、01.0等

       (暂时能想到的输入规则就这些了,大家可以继续补充)

       知道了规则,接下来就是showTime时刻了,亮出代码。

   Edittext使用的那些事儿--输入金额_第1张图片

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点击打开链接

你可能感兴趣的:(基本控件使用)