微信轉(zhuǎn)賬輸入框規(guī)則(可能不全)
1、小數(shù)點后兩位
2、起始輸入小數(shù)點,顯示0.
3、刪除到第一個位置是小數(shù)點的時候,第一個位置為0 ,避免出現(xiàn)小數(shù)點在第一個位置的情況
修改這個朋友的規(guī)則而來,他的規(guī)則在保證小數(shù)點后兩位有個小bug,已經(jīng)修改
//m.survivalescaperooms.com/article/99361.htm
效果:

@Override public CharSequence filter(CharSequence source, int start, int end, Spanned dest, int dstart, int dend) { String sourceText = source.toString(); String destText = dest.toString(); //驗證刪除等按鍵 if (TextUtils.isEmpty(sourceText)) { if(dstart==0&&destText.indexOf(POINTER)==1){//保證小數(shù)點不在第一個位置 return "0"; } return ""; } Matcher matcher = mPattern.matcher(source); //已經(jīng)輸入小數(shù)點的情況下,只能輸入數(shù)字 if(destText.contains(POINTER)) { if (!matcher.matches()) { return ""; } else { if (POINTER.equals(source)) { //只能輸入一個小數(shù)點 return ""; } } //驗證小數(shù)點精度,保證小數(shù)點后只能輸入兩位 int index = destText.indexOf(POINTER); int length = destText.trim().length() - index; if (length > POINTER_LENGTH&&dstart>index) { return ""; } } else { //沒有輸入小數(shù)點的情況下,只能輸入小數(shù)點和數(shù)字,但首位不能輸入小數(shù)點和0 if (!matcher.matches()) { return ""; } else { if ((POINTER.equals(source)) && dstart==0) {//第一個位置輸入小數(shù)點的情況 return "0."; } } } //驗證輸入金額的大小 double sumText = Double.parseDouble(destText + sourceText); if (sumText > MAX_VALUE) { return dest.subSequence(dstart, dend); } return dest.subSequence(dstart, dend) + sourceText; }EditText樣式
<EditText android:id="@+id/et" android:layout_width="match_parent" android:layout_height="wrap_content" android:textSize="20sp" android:maxLength="10" android:inputType="numberDecimal" />
設(shè)置filter
EditText ed = (EditText) findViewById(R.id.et);InputFilter[] is = {new CashierInputFilter()};ed.setFilters(is);源碼
新聞熱點
疑難解答
圖片精選