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);