Androidで入力文字の制限

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

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です