Android EditText限制輸入數字和字母

很多時候我們需要限制用戶輸入的類型甚至是內容,例如電話號碼,限制inputType爲number,暱稱限制輸入類型爲text等等

方法1:直接在代碼中做限制

String digists = "0123456789abcdefABCDEF";
Edittext.setKeyListener(DigitsKeyListener.getInstance(digists));

限制輸入內容爲0~9,a~f。用於輸入十六進制的0~16

這樣寫的結果是默認彈出數字鍵盤,同時可以切換全鍵盤輸入字母。三星手機除外,使用三星手機時,彈出的數字鍵盤爲純數字,0~9,沒有切換鍵盤的按鈕。(很坑的三星輸入法)

方法二:在佈局文件中做限制

<caro.automation.utils.SpaceEditText
                    android:id="@+id/et_network_mac"
                    android:layout_width="0dp"
                    android:layout_height="35dp"
                    android:layout_marginRight="10dp"
                    android:layout_weight="5"
                    android:background="@drawable/bg_et_room_name"
                    android:gravity="left"
                    android:hint="xx-xx-xx-xx-xx-xx-xx-xx"
                    android:maxLength="23"
                    android:singleLine="true"
                    android:digits="0123456789abcdefABCDEF"
                    android:inputType="number"
                    android:textColor="@color/black"
                     />

 

android:digits="0123456789abcdefABCDEF" 表示這個Edittext只能輸入“0123456789abcdefABCDEF”這些數字和字母,inputType限制了默認彈出數字鍵盤。這裏一樣是會有少數手機有問題,例如三星。

方法三:不做具體限制,允許輸入任何字符

在佈局文件中設置inputType的類型爲text,或者在代碼中設置

Edittext.setInputType(InputType.TYPE_CLASS_TEXT);限制輸入類型爲文本,然後使用正則表達式判斷輸入字符是否符合要求,不符合的Toast提示輸入類型有誤。這個可以用作三星手機的解決方案,就是寫正則表達式要多寫一些代碼。

方法四:自定義鍵盤

可以徹底解決一切問題,但是不建議,除非是大佬,畢竟這個有點複雜。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章