Android EditText限制輸入整數(shù)和小數(shù)的位數(shù)的方法示例
更新時間:2018年08月14日 13:45:48 作者:淡淡_孩子氣
這篇文章主要介紹了Android EditText限制輸入整數(shù)和小數(shù)的位數(shù)的方法示例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
直接上代碼
新建DecimalInputTextWatcher類繼承TextWatcher (代碼可直接復制使用)
import android.text.Editable; import android.text.InputFilter; import android.text.TextWatcher; import android.widget.EditText; /** * EditText 限制輸入整數(shù)和小數(shù) 的位數(shù) * 默認 整數(shù)位無限制,小數(shù)位 最多2位 */ public class DecimalInputTextWatcher implements TextWatcher { private static final int DEFAULT_DECIMAL_DIGITS = 2;//默認 小數(shù)的位數(shù) 2 位 private EditText editText; private int decimalDigits;// 小數(shù)的位數(shù) private int integerDigits;// 整數(shù)的位數(shù) public DecimalInputTextWatcher(EditText editText) { this.editText = editText; this.decimalDigits = DEFAULT_DECIMAL_DIGITS; } public DecimalInputTextWatcher(EditText editText, int decimalDigits) { this.editText = editText; if (decimalDigits <= 0) throw new RuntimeException("decimalDigits must > 0"); this.decimalDigits = decimalDigits; } public DecimalInputTextWatcher(EditText editText, int integerDigits, int decimalDigits) { this.editText = editText; if (integerDigits <= 0) throw new RuntimeException("integerDigits must > 0"); if (decimalDigits <= 0) throw new RuntimeException("decimalDigits must > 0"); this.decimalDigits = decimalDigits; this.integerDigits = integerDigits; } @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) { } @Override public void onTextChanged(CharSequence s, int start, int before, int count) { } @Override public void afterTextChanged(Editable editable) { String s = editable.toString(); editText.removeTextChangedListener(this); if (s.contains(".")) { if (integerDigits > 0) { editText.setFilters(new InputFilter[]{new InputFilter.LengthFilter(integerDigits + decimalDigits + 1)}); } if (s.length() - 1 - s.indexOf(".") > decimalDigits) { s = s.substring(0, s.indexOf(".") + decimalDigits + 1); editable.replace(0, editable.length(), s.trim());//不輸入超出位數(shù)的數(shù)字 } } else { if (integerDigits > 0) { editText.setFilters(new InputFilter[]{new InputFilter.LengthFilter(integerDigits + 1)}); if (s.length() > integerDigits) { s = s.substring(0, integerDigits); editable.replace(0, editable.length(), s.trim()); } } } if (s.trim().equals(".")) {//小數(shù)點開頭,小數(shù)點前補0 s = "0" + s; editable.replace(0, editable.length(), s.trim()); } if (s.startsWith("0") && s.trim().length() > 1) {//多個0開頭,只輸入一個0 if (!s.substring(1, 2).equals(".")) { editable.replace(0, editable.length(), "0"); } } editText.addTextChangedListener(this); } }
使用
editText.addTextChangedListener(new DecimalInputTextWatcher(weight, 3, 5)); //限制輸入位數(shù):整數(shù)3位,小數(shù)點后兩位
以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
您可能感興趣的文章:
- Android 登錄頁面的實現(xiàn)代碼(密碼顯示隱藏、EditText 圖標切換、限制輸入長度)
- Android EditText隨輸入法一起移動并懸浮在輸入法之上的示例代碼
- Android EditText每4位自動添加空格效果
- Android EditText追加空格、限制字符等方法示例
- Android EditText長按菜單中分享功能的隱藏方法
- Android中多個EditText輸入效果的解決方式
- Android實現(xiàn)微信朋友圈評論EditText效果
- Android EditText監(jiān)聽回車鍵并處理兩次回調問題
- Android實現(xiàn)EditText添加下劃線
- Android自定義密碼輸入EditTextLayout
- Android使用EditText小技巧匯總
相關文章
Fedora14下android開發(fā): eclipse與ibus確有沖突的問題分析
本篇文章是對Fedora14下android開發(fā),eclipse與ibus確有沖突的問題進行了分析介紹,需要的朋友參考下2013-05-05Android編程實現(xiàn)PendingIntent控制多個鬧鐘的方法
這篇文章主要介紹了Android編程實現(xiàn)PendingIntent控制多個鬧鐘的方法,涉及PendingIntent屬性設置與使用的相關技巧,具有一定參考借鑒價值,需要的朋友可以參考下2015-12-12android使用FlipAnimation實現(xiàn)3D垂直翻轉動畫
這篇文章主要為大家詳細介紹了android使用FlipAnimation實現(xiàn)3D垂直翻轉動畫,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-12-12android實現(xiàn)圖片上傳功能(springMvc)
這篇文章主要為大家詳細介紹了android結合springMvc實現(xiàn)圖片上傳的相關代碼,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-03-03android實現(xiàn)點擊按鈕切換不同的fragment布局
這篇文章主要為大家詳細介紹了android實現(xiàn)點擊按鈕切換不同的fragment布局,具有一定的參考價值,感興趣的小伙伴們可以參考一下2018-12-12Android ViewPager實現(xiàn)左右滑動的實例
這篇文章主要介紹了Android ViewPager實現(xiàn)左右滑動的實例的相關資料,這里提供實現(xiàn)代碼實現(xiàn)左右滑動的功能,希望能幫助到大家,需要的朋友可以參考下2017-08-08Kotlin 創(chuàng)建接口或者抽象類的匿名對象實例
這篇文章主要介紹了Kotlin 創(chuàng)建接口或者抽象類的匿名對象實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-03-03