1. 程式人生 > >Android Edittext輸入限制一位小數2位小數(n位)小數簡單通用實現

Android Edittext輸入限制一位小數2位小數(n位)小數簡單通用實現

最近一個需求最大金額輸入999999.99,在網上看了一下都寫的比較繁瑣,不是很易懂

首先限制輸入型別在xml裡面配置

android:inputType="numberDecimal"
再限制長度算上小數點一共9位
android:maxLength="9"
重點來了怎麼限制2位小數
直接上程式碼
private String discountStr;

private TextWatcher discountWatch = new TextWatcher() {
    @Override
public void beforeTextChanged(CharSequence s, int start, int 
count, int after) { discountStr = s.toString(); } @Override public void onTextChanged(CharSequence s, int start, int before, int count) { String trim = s.toString().trim(); if (!TextUtils.isEmpty(trim)) { Double currentInput = 0.0; if (trim.contains("."
)) { String[] split = trim.split("\\."); if (split.length > 1) { String s1 = split[1]; if (!TextUtils.isEmpty(s1)) { if (s1.length() == 2) { etDiscount.setText(discountStr); try
{ String trim1 = etDiscount.getText().toString().trim(); etDiscount.setSelection(trim1.length()); } catch (Exception e) { e.printStackTrace(); } return; } } } } } } @Override public void afterTextChanged(Editable s) { } };
原理很簡單,在beforeTextChanged裡面把上一次輸入的值用discountStr存起來
,在onTextChanged裡面判斷是否包含小數點,如果包含小數點則對其進行切割,如
果切割的第二位長度大於2(N)則讓它再次賦值為discountStr。,需要注意的是分割
小數點要用到轉義符。