很多時候我們需要限制用戶輸入的類型甚至是內容,例如電話號碼,限制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提示輸入類型有誤。這個可以用作三星手機的解決方案,就是寫正則表達式要多寫一些代碼。
方法四:自定義鍵盤
可以徹底解決一切問題,但是不建議,除非是大佬,畢竟這個有點複雜。