EditText输入长度动态控制,最大长度为16位,小数点后面最大为2位,输入整数只能为13位

首先在xml 中把inputType设置为numberDecimal (包含小数点)然后在把maxLeng设置为16

package com.example.numbertest;

import android.app.Activity;
import android.os.Bundle;
import android.text.Editable;
import android.text.TextWatcher;
import android.widget.EditText;

public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        EditText editText=(EditText) this.findViewById(R.id.et);
        editText.addTextChangedListener(new TextWatcher() {
            
            @Override
            public void onTextChanged(CharSequence s, int start, int before, int count) {
            }
            
            @Override
            public void beforeTextChanged(CharSequence s, int start, int count,
                    int after) {
            }
            
            @Override
            public void afterTextChanged(Editable s) {
                String str=s.toString();
                
                //如果字符串中有小数点,就对小数点进行分割,
                if(str.contains(".")){
                    String[] strArr = str.split("\.");
                    //判断小数点后面的位数,如果超过两位就删除后面的数据,不让输入
                    if(strArr.length>1 && strArr[1].length()>2){
                        s.delete(str.length()-1, str.length());
                    }
                }
                //如果不包含小数点,只能输入13整数,如果包含小数点就按照小数点的进行处理
                if(str.length()>13 && !str.contains(".")){
                    s.delete(str.length()-1, str.length());
                }
                
            }
        });
    }


}
原文地址:https://www.cnblogs.com/tianshidechibang234/p/4099194.html