Adroid edittext 輸入小數時只能輸入到小數點後的固定位數
android 開發中遇到的關於edittext輸入型別為數字時如何在xml中編輯可輸入的固定的小數位數,對於此問題本人解決方案如下
一、新建NumberEditText 繼承 EditText 具體如下
import android.annotation.SuppressLint;
import android.content.Context;
import android.content.res.TypedArray;
import android.text.Editable;
import android.text.TextWatcher;
import android.util.AttributeSet;
import android.widget.EditText;
import com.ljy.mzdb.liangcheng.R;
/**
-
@author:Mr.Zan
-
@date: 2020/10/16 17:44
-
email:644962006@qq.com
-
detail:數字輸入,並限制小數點後位數
*/
@SuppressLint(“AppCompatCustomView”)
public class NumberEditText extends EditText {
private int maxDecimalPoint=2;
public NumberEditText(Context context) {
super(context);
// TODO Auto-generated constructor stub
}public NumberEditText(Context context, AttributeSet attrs) {
super(context,attrs);
changeText(context,attrs);
setTextWatcher();
}public void changeText(Context context, AttributeSet attrs) {
TypedArray array = context.obtainStyledAttributes(attrs, R.styleable.NumberEditText); maxDecimalPoint = array.getInt(R.styleable.NumberEditText_maxDecimalPoint, 2); array.recycle();
}
public void setTextWatcher() {
addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {} @Override public void onTextChanged(CharSequence s, int start, int before, int count) { if (start >= 0) {//從一輸入就開始判斷, try { if (s.toString().startsWith(".")){ setText("0."); setSelection(s.length()+1); }else if (s.toString().contains(".")&&(s.toString().length()-s.toString().indexOf(".")>(maxDecimalPoint+1))){ setText(s.toString().substring(0,s.length()-1)); setSelection(s.length()-1); } } catch (Exception e) { e.printStackTrace(); } return; } } @Override public void afterTextChanged(Editable s) { } });
}
}
二、在res 下的velues 資料夾下新增 attrs.xml
在該檔案中新增如下程式碼
-
<declare-styleable name="NumberEditText"> <attr name="maxDecimalPoint" format="integer" /> </declare-styleable>
三、使用方法
- 在佈局檔案中新增 <com.*****.NumberEditText
- 設定輸入型別 android:inputType=“numberDecimal”
- 預設保留2位小數 需要修改為其他的位數只需新增 app:maxDecimalPoint=“n” 需要保留幾位小數 n輸入幾就可以了
相關文章
- C# textbox只能輸入數字和小數點C#
- input限制只能輸入整數或保留小數點後2位的浮點數
- 輸入框只能輸入負數,整數,2位小數(鍵盤彈起事件)事件
- input 輸入框只能輸入數字
- Vue只能輸入數字Vue
- el-input 只能輸入整數或者小數,而且有位數現在
- Input 輸入框中 只能輸入正整數
- 金額輸入校驗,限制小數點後兩位
- QLineEdit限定只能輸入整數
- 輸入三個數按從大到小的順序輸出
- JavaScript 文字框只能輸入數字JavaScript
- 寫一個方法,實時驗證input輸入的值是否滿足金額如:3.56(最多隻有兩位小數且只能數字和小數點)的格式,其它特殊字元禁止輸入字元
- 短視訊軟體開發,flutter 輸入框限制輸入 數字、小數Flutter
- input輸入框加入限制只能輸入正整數,輸入其他字元會自動清除字元
- wpf怎麼讓Textbox只能輸入數字?
- 微信小程式input輸入框設定最大可輸入字元數量微信小程式字元
- python ----輸入輸出 變數Python變數
- C語言判斷輸入小寫字母的個數C語言
- PHP 保留小數點後有效數字(四捨五入)PHP
- vue---input只能輸入數字,且限制長度Vue
- 輸入十個整數,輸出其中質數
- 輸入N,再輸入N個數,N
- 1.變數and輸入輸出變數
- js-正負數保留小數點特定位數JS
- 輸入10個整數,求最大數
- Python如何從大到小輸出三個數?Python
- 將三個數按從大到小輸出
- 你的程式要讀入一系列正整數資料,輸入-1表示輸入結束,-1本身不是輸入的資料。程式輸出讀到的資料中的奇數和偶數的個數。
- input 限制字數輸入時候 限制字數會出現負數
- mysql格式化小數保留小數點後兩位(小數點格式化)MySql
- iOS小數點格式化:最多保留兩位小數,小數點後末尾的0不要iOS
- 統計輸入的數字為正數和負數的個數
- 影片直播app原始碼,EditText保留小數位數APP原始碼
- C語言輸出多位小數C語言
- main命令列引數輸入AI命令列
- 輸入一個整數,返回這個整數的位數
- 動手寫個數字輸入框3:痛點——輸入法是個魔鬼
- C++筆記:輸入輸出、變數、變數加減乘除C++筆記變數