Androidで入力文字の制限
EditTextで入力文字の制限をするには
inputFilterを使う
例えば、メルアドしか入力できないようにするなら
レイアウトファイルで定義
<EditText android:id="@+id/mailform" android:layout_width="wrap_content" android:layout_height="wrap_content" android:hint="メルアドのみ入力可" android:textSize="16sp"/>
次に、Javaで文字制限を行うinputFilterを設定
生成したInputFilterは
InputFilterの配列へ格納し
setFilters()を使ってEditTextへセットする
まず、メルアド用のフィルターを作成
InputFilter inputFilter = new InputFilter(){ @Override CharSequence filter(CharSequence source, int start, int end, Spanned dest, int dstart, int dend){ if(source.toString().matches("^[0-9a-zA-Z@¥¥.¥¥_¥¥-]+$")){ return source; }else{ return ""; } } };
次に、フィルターの格納
InputFilter[] filters = new InputFilter[]{ inputFilter };
そして、フィルターの適用
editText.setFilters(filters);
EditTextは、
inputType=””
とか
max=””
で入力タイプとか文字数の指定ができるけど
これだと定義したものだけしかフィルタリングできない
これに対して
InputFilterは、正規表現を使うことで入力を細かく指定できるし
inputFilterを複数指定できるので
こちらのほうが使いやすい
文字数制限といえば、Twitterだと
140文字制限なので
tweet用の入力欄で140文字までにするなら
InputFilter lengthFilter = new InputFilter.LengthFilter(140); InputFilter[] filters = new InputFilter[]{ lengthFilter }; editText.setFilters(filters);