1. 程式人生 > >限制 EditText 最多輸入兩位小數

限制 EditText 最多輸入兩位小數

為了美觀,先限制一下

android:inputType="numberDecimal"
android:maxLength="9"

1.要求與思路

細節要求:

  • 以小數點開頭,前面自動加上 “0”
  • 以小數點結尾,去掉小數點

思路:利用 EditText 的輸入監聽實現小數位的擷取,和移動游標到末尾,在失去焦點後,去掉結尾的小數點

2. 解決辦法:新增監聽

新增輸入監聽:

editText.addTextChangedListener(new TextWatcher() {
    boolean deleteLastChar;// 是否需要刪除末尾

    @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 (s.toString().contains(".")) { // 如果點後面有超過三位數值,則刪掉最後一位 int length = s.length() - s.toString().lastIndexOf("."
); // 說明後面有三位數值 deleteLastChar = length >= 4; } } @Override public void afterTextChanged(Editable s) { if (s == null) { return; } if (deleteLastChar) { // 設定新的擷取的字串 editText.setText(s.toString().substring(0
, s.toString().length() - 1)); // 游標強制到末尾 editText.setSelection(editText.getText().length()); } // 以小數點開頭,前面自動加上 "0" if (s.toString().startsWith(".")) { editText.setText("0" + s); editText.setSelection(editText.getText().length()); } } });

新增失去焦點監聽:

editText.setOnFocusChangeListener(new View.OnFocusChangeListener() {
    @Override
    public void onFocusChange(View v, boolean hasFocus) {
        EditText editText1 = (EditText) v;
        // 以小數點結尾,去掉小數點
        if (!hasFocus && editText1.getText() != null && editText1.getText().toString().endsWith(".")) {
            editText.setText(editText1.getText().subSequence(0, editText1.getText().length() - 1));
            editText.setSelection(editText.getText().length());
        }
    }
});

相關推薦

限制 EditText 輸入小數

為了美觀,先限制一下 android:inputType="numberDecimal" android:maxLength="9" 1.要求與思路 細節要求: 以小數點開頭,前面自動加上

正則限制輸入為數字,且輸入2小數 之 新寫法

符號 接受 fff asc pad 函數 ext www 對象   原本小程序需要一個限制文本框輸入為數字,且最多保留2位小數的效果,網上找到的例子感覺有點繁瑣,就自己寫了一個。 代碼很簡單,主要借助了正則的組匹配特性進行處理: //檢查輸入文本,限制只能為數字並且數字最

Android-EditText種方法限制輸入小數

為什麼有這個需求 說實話,這個需求簡直可以說無處不在了,因為,只要有輸入金額的需求,客戶端限制輸入位數幾乎是肯定的。 功能點分析 1.首位輸入.的時候,補全為0. 2.刪除“.”後面超過2位後的資料 3.如果起始位置為0,且第二位跟

限制input只能輸入數字且限制只能輸入小數

chrome中的input不要加type=”number”,有問題,輸入負號擷取到第一個字串是空,就預設text就行 若允許負數加上allowMinus類,正數只加limitNumber 以下可以封裝成函式,加到DOM上的onkeyup=foo(this)

限定EditText只能輸入小數種方式

/** * 限定EditText只能輸入最多兩位小數 * @author Administrator * */ public class MainActivity extends ActionBarActivity { private EditText num_et; private EditT

輸入10整數2小數的正則表示式

正則表示式的定義共有2種方式:顯示定義和隱式定義。 var myregex = new RegExp("[0-9]"); //顯式定義 var myregex = /[0-9]/; //隱式定義    複雜的正則表示式就是由許多子表示式構成的。此處涉及到正則表達的3個知識點:定位

輸入10整數2小數的正則表達式

分組 asc 一個 匹配 更多 方式 限定符 image 簡單 正則表達式的定義共有2種方式:顯示定義和隱式定義。 var myregex = new RegExp("[0-9]"); //顯式定義 var myregex = /[0-9]/; //隱式定義

js jquery 限制input輸入框只能輸入小數的數字

//正整數 兩位小數 $('.inputWrap').on('input', function () { var num = $(this).val(); if(n

OC UITextField只允許輸入小數

//只能輸入兩位小數 - (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string { Boolean is

控制輸入框只能輸入小數和一個小數點

在專案中會對輸入框中的輸入值實時控制小數位,限制使用者只能輸入兩位小數,一個小數點.$(obj).bind("input onInput",function(){ var value =

只能讓使用者輸入數字和小數點後多能輸入

html<input type="text" id="money" /><span>檢視輸入的值</span>scriptvar str; $("#money").keyup(function() { var reg = /^\d+\.

android中限制EditText輸入位元組數

需求:使用者只能在輸入框內輸入15個位元組的字元(15個英文字元或5箇中文字元)瞭解:一個英文字元在Android中佔一個位元組,一箇中文字元在Android中佔3個位元組程式碼public class MainActivity extends AppCompatActivi

iOS 怎樣實現保留n小數

@implementation NSNumber (TwoDecimal) - (NSString *)twoDecimalString { NSNumberFormatter *formatter = [[NSNumberFormatter allo

正則表示式--限制input輸入0~1之間的小數,含0,1,小數

一個簡單的正則表示式,工作中可能經常用到,限制字串的輸入、數字的輸入,這些用一個onkeyup就解決了,如:onkeyup="value=value.replace(/[^\d]/g,'') //限制輸入數字 最近有個小需求,限制輸入框輸入費率,要求:只能輸入0-1之間的小

android editText 控制輸入大值、保留小數、保留小數點前面位數

常用方案: 1.在editText的監聽addTextChangedListener中邏輯判斷 2.使用editText的setFilters(new InputFilter[]),設定輸

Android EditText限制小數點輸入

限制輸入小數點兩位 需要對輸入框設定鍵盤型別 inputType:number_decimal bank_card_pay_balance.addTextChangedListener(new TextWatcher() { boolean deleteLastChar;//是否需要刪

ACMNO.14一球從M米高度自由下落,每次落地後返回原高度的一半,再落下。 它在第N次落地時反彈高?共經過多少米? 保留小數 輸入 M N 輸出 它在第N次落地時反彈高?共經過多少米

題目描述 一球從M米高度自由下落,每次落地後返回原高度的一半,再落下。 它在第N次落地時反彈多高?共經過多少米? 保留兩位小數 輸入 M N 輸出 它在第N次落地時反彈多高?共經過多少米? 保留兩位小數,空格隔開,放在一行 樣例輸入 1000 5

JS通過正則限制 input 輸入框只能輸入整數、小數(金額或者現金) 小數

第一: 限制只能是整數 ? 1 <input type = "text" name= "number" id = 'number' onkeyup= "if(! /^d+$/.t

正則表示式校驗金額小數的實數

數字校驗(專案中用於校驗金額的): 任意正整數,正小數(小數位不超過2位) var isNum=/^(([1-9][0-9]*)|(([0]\.\d{1,2}|[1-9][0-9]*\.\d{1,2})))$/;

Java float保留小數小數

plain ima itl highlight border 十進制 syn 兩位小數 ice 方法1:用Math.round計算,這裏返回的數字格式的. 1 2 3 4 float price=89.89; int itemNum=3; fl