1. 程式人生 > >Android 限制edittext 整數和小數位數 過濾器

Android 限制edittext 整數和小數位數 過濾器

    寫了一個過濾器,根據需要限制edittext輸入的整數和小數位,如下程式碼:

package allone.verbank.apad.client.component;

import android.text.InputFilter;
import android.text.Spanned;

/**
 * 
 * @Title: ComponentDigitCtrlFilter.java 
 * @Package allone.verbank.apad.client.component 
 * @Description: 為了限制edit根據商品輸入指定的位數和小數位
 * @author qiulinhe 
[email protected]
  * @date 2016年3月21日 上午10:49:30    */ public class ComponentDigitCtrlFilter implements InputFilter { private boolean isJPY; private int digit; public ComponentDigitCtrlFilter(boolean isJPY, int digit) { this.isJPY = isJPY; this.digit = digit; } @Override public CharSequence filter(CharSequence source, int start, int end, Spanned dest, int dstart, int dend) { // 刪除等特殊字元,直接返回 if ("".equals(source.toString())) { return null; } String oriValue = dest.toString(); StringBuffer sb = new StringBuffer(oriValue); sb.append(source); String newValue = sb.toString(); String[] newValueVec = newValue.split("\\."); if (newValueVec.length == 2) { double number = Double.parseDouble(newValueVec[0]); boolean numberflag = true; if (isJPY) { numberflag = ((number - 999 > 0.000001) ? false : true); } else { numberflag = ((number - 99 > 0.000001) ? false : true); } boolean digitflag = true; try { String digitNumber = newValueVec[1]; digitflag = digitNumber.toCharArray().length > digit ? false : true; } catch (Exception ex) { digitflag = false; } if (numberflag && digitflag) { return source; } else { return ""; } } else { double value = Double.parseDouble(newValue); if (isJPY) { return value > 999 ? "" : source; } else { return value > 99 ? "" : source; } } // dest.subSequence(dstart, dend) } }
邏輯是判斷傳入的isJPY是否是要整數兩位小數三位數的,然後對輸入的資料進行限制,只需要將過濾器新增到對應的edittext控制元件即可,如下:stopEditText.setFilters(new InputFilter[] { new ComponentDigitCtrlFilter(digit == 2, digit) });

相關推薦

Android 限制edittext 整數小數位數 過濾器

    寫了一個過濾器,根據需要限制edittext輸入的整數和小數位,如下程式碼: package allone.verbank.apad.client.component; import and

android限制edittext輸入為數字,只允許輸入數字最多一個.-

開發遇到的問題 安卓自帶的輸入數字不能輸入.和-,於是自己寫了個。基本夠用了 public void limit(final EditText listValue3){ listValue3.addTextChangedListener(new TextWa

android:限制EditText輸入位數

withDrawcet.addTextChangedListener(new TextWatcher() { @Override public voi

驗證整數小數的正則表達式

保留 經驗 位數 必須 拆分 代碼 整數 限制 表達   網上很多關於驗證小數的正則表達式,但是很多都不是百分百正確,所以我結合一些前輩的經驗,自己寫了一個。   驗證非0開頭的無限位整數和小數(可為空)。整數支持無限位,小數點前支持無限位,小數點後最多保留兩位。   js

請實現一個函式用來判斷字串是否表示數值(包括整數小數)。例如,字串"+100","5e2","-123","3.1416""-1E-16"都表示數值。

題目描述 請實現一個函式用來判斷字串是否表示數值(包括整數和小數)。例如,字串"+100","5e2","-123","3.1416"和"-1E-16"都表示數值。 但是"12e","1a3.14","1.2.3","+-5"和"12e+4.3"都不是。 /* 思路:需要滿足一下規則(正則表

請實現一個函式用來判斷字串是否表示數值(包括整數小數)。例如,字串"+100","5e2","-123","3.1416""-1E-16"都表示數值。 但是"12e",&quo

package com.java.jie; public class test2 { public static void main(String [] args) { } public boolean isNumeric(char[] str) {

java利用正則表示式提取字串中的整數小數部分

最近開發遇到一個新的東西,就是前端傳過來一個字串,需要將裡面的數字提取出來,倒騰了一天,最後還是沒有倒騰出來,最後還是借鑑大佬的方法。記錄一下。 首先是前端傳來的字串“小明通過掃碼向你付款100000.566元”其中暱稱和金額不是固定的,其他是固定的。 於是便考慮使用“通過掃碼向你付

2、專案2-分離整數小數部分

1. 任務描述 從鍵盤上輸入一個浮點數(小數點後有三位數),分別輸出該數的整數部分和小數部分。 2. 程式碼實現 /* *Copyright(c)2018,CSDN *All rights reserved. *檔名稱:point_separate.cpp *作 者:馬婭

c#正則表示式匹配整數小數

用於判斷Textbox中的輸入是否為整數或者小數 參考資料:http://www.cnblogs.com/generalz/articles/1890097.html               http://bbs.csdn.net/topics/360076679

驗證整數小數的正則表示式

  轉載至:https://www.cnblogs.com/overfly/archive/2018/10/08/9753478.html   驗證非0開頭的無限位整數和小數。整數支援無限位,小數點前支援無限位,小數點後最多保留兩位。   js程式碼如下:   var reg

正則判斷一個字串是否為數字(包括整數小數

判斷一個字串是否為數字(包括整數和小數)public class IsNumber { public static boolean isNumeric(String str) {

android 限制EditText輸入數字的範圍大小

一,要想限制EditText的輸入大小,經過學習和測試;最好是建立自己的EditText(當然是繼承的) public class DecimalEditText extends android.support.v7.widget.AppCompatEditText {

Android限制EditText只能輸入中文或者指定內容的實現

最近專案中要限制EditText中只能輸入中文,之前寫過一個限制EditText只能輸入中文的實現,不過存在一些問題,而且擴充套件性不是很好,所以換了一種方法來實現. 先看一下效果圖: 具體實現 一般對EditText的操作及處理都是用addTex

Android 限制EditText只能輸入數字、限制輸入型別、限制輸入長度的小技巧

準確的說讓Edittext只能輸入數字有方法兩種,都是通過xml屬性設定 方法一: <EditText            android:id="@+id/u_account"            android:layout_width="0dp"

input輸入框只能輸入正整數、或輸入正整數小數

input 輸入數字類的一些判別  方法一:實現輸入框只能輸入正整數,輸入同時禁止了以0開始的數字輸入,防止被轉化為其他進位制的數值。 <input type='text' onkeyup="value=value.replace(/^(0+)|[^\d]+/g,

【劍指Offer-字串】請實現一個函式用來判斷字串是否表示數值(包括整數小數

題目 請實現一個函式用來判斷字串是否表示數值(包括整數和小數)。例如,字串”+100”,”5e2”,”-123”,”3.1416”和”-1E-16”都表示數值。 但是”12e”,”1a3.14”,”1.2.3”,”+-5”和”12e+4.3”都不是。 輸

parseInt與parseFloat、如何區分整數小數

如果字串中含有非數字的情況,就不能使用Namber()方法來進行轉換。 parseInt() 不認識小數點 parseInt():是從左到右一個一個解析,看到數字就通過,非數字就停止解析。 var a = '00000100px'; alert(p

AndroidEditText限制僅允許輸入漢字/僅允許漢字數字

最近專案各種需求,各種更改,之前的需求是editText只要不是數字就ok了. 現在需求改為只允許輸入漢字,採用正則表示式完成. @BindView(R2.id.et_other_college) EditText etOtherCollege; 自定義一個方法: publ

Android EditText 限制輸入數字字母設定

在xml:EditText 設定屬性----android:digis="ABCDE555555&&&&&"ABCDE555555&&&&&"是你的限制規則。例如:android:digits="

Android EditText 輸入數字小數,設定輸入的範圍0.001-1000

要求實現的效果:EditText的輸入資料值的範圍是0.001-1000。 因為EditText輸入的是數字和小數,兩種型別。 佈局型別: <EditText andro