Android EditText不超過2位小數

2021-10-01 03:12:20 字數 3092 閱讀 8157

android-edittext兩種方法限制輸入兩位小數

說實話,這個需求簡直可以說無處不在了,因為,只要有輸入金額的需求,客戶端限制輸入位數幾乎是肯定的。

1.首位輸入.的時候,補全為0.

2.刪除「.」後面超過2位後的資料

3.如果起始位置為0,且第二位跟的不是".",則無法後續輸入

/**

* *描述 :金額輸入字型監聽類,限制小數點後輸入位數

* * 預設限制小數點2位

* 預設第一位輸入小數點時,轉換為0.

* 如果起始位置為0,且第二位跟的不是".",則無法後續輸入

* *作者 :created by duanrui on 2017/9/28.

*/public

class

moneytextwatcher

implements

textwatcher

public moneytextwatcher setdigits

(int d)

@override

public

void

beforetextchanged

(charsequence s,

int start,

int count,

int after)

@override

public

void

ontextchanged

(charsequence s,

int start,

int before,

int count)

}//如果"."在起始位置,則起始位置自動補0

if(s.

tostring()

.trim()

.substring(0

).equals

("."))

//如果起始位置為0,且第二位跟的不是".",則無法後續輸入

if(s.

tostring()

.startswith

("0"

)&& s.

tostring()

.trim()

.length()

>1)

}}}@override

public

void

aftertextchanged

(editable s)

}

使用方法:

//預設兩位小數

medittext.

addtextchangedlistener

(new

moneytextwatcher

(medittext1));

//手動設定其他位數,例如3

medittext.

addtextchangedlistener

(new

moneytextwatcher

(medittext1)

.setdigits(3

);

/**

* *描述 :金額輸入過濾器,限制小數點後輸入位數

* * 預設限制小數點2位

* 預設第一位輸入小數點時,轉換為0.

* 如果起始位置為0,且第二位跟的不是".",則無法後續輸入

* *作者 :created by duanrui on 2017/9/28.

*/public

class

moneyvaluefilter

extends

digitskeylistener

private

int digits =2;

public moneyvaluefilter setdigits

(int d)

@override

public charsequence filter

(charsequence source,

int start,

int end,

spanned dest,

int dstart,

int dend)

int len = end - start;

// if deleting, source is empty

// and deleting can't break anything

if(len ==0)

//以點開始的時候,自動在前面新增0

if(source.

tostring()

.equals

("."

)&& dstart ==0)

//如果起始位置為0,且第二位跟的不是".",則無法後續輸入if(

!source.

tostring()

.equals

("."

)&& dest.

tostring()

.equals

("0"))

int dlen = dest.

length()

;// find the position of the decimal .

for(

int i =

0; i < dstart; i++)}

for(

int i = start; i < end;

++i)

}// if the dot is after the inserted part,

// nothing can break

return

newspannablestringbuilder

(source, start, end);}

}

使用方法:

//預設兩位小數

medittext.

setfilters

(new

inputfilter

);//手動設定其他位數,例如3

medittext.

setfilters

(new

inputfilter

);

android edittext學習記錄

實現在edittext中輸入自定義表情,需要將放在drawable中的表情,嵌入到edittext中,這裡利用imagespan實現該功能。第一步 利用反射機制,得到資源的id,生成bitmap物件 field field r.drawable.class.getdeclaredfield imag...

Android EditText屬性總結

接下來老於就總結一下 edittext屬性吧!android inputtype none 這個就不要解釋了吧 android inputtype text 文字型別,多為大寫 小寫和數字符號 android inputtype textcapcharacters 字母大寫 android inpu...

Android EditText左右滑動

預設的edittext寫滿一行後會自動轉換到下一行,但是我們有時候需要的滿一行後左右滑動過去而不是換行,此時我們可以設定edittext 的屬性 android maxlines 1 即可,如果不可以,則加上 android singleline true android layout width ...