#EditText でのアルファベット大文字制限
Android アプリでの入力ボックスとして使われる EditText で、
アルファベット大文字のみの入力に制限したい!
iOS の場合は 【iOS】UITextField でのアルファベット大文字制限、長さ制限 を参照してください。
環境
ホスト: Windows 10
Android Studio: 3.3.2
Java
属性の設定で行う場合
レイアウトを開き対象の UITextField を選択して 右ペインの属性:digits を開いて編集します。
android:digits="ABCDEFGHIJKLMNOPQRSTUVWXYZ"
他の制約もまとめて適用する場合
フィルターの準備
MyActivity.java
// アルファベットフィルタ
private InputFilter alphabetFilter = new InputFilter() {
@Override
public CharSequence filter(CharSequence source, int start, int end,
Spanned dest, int dstart, int dend) {
if (source.toString().matches("^[a-zA-Z]+$")) {
return source.toString().toUpperCase(Locale.ROOT);
} else {
return "";
}
}
};
EditText にフィルター設定
- onCreate 関数内などで実装
MyActivity.java
InputFilter myFilters[] = {alphabetFilter, new InputFilter.LengthFilter(5)}; // 大文字+アルファベットフィルタ+長さフィルタ
EditText targetEditText = findViewById(R.id.edittext_target);
targetEditText.setFilters(myFilters);
実機テスト
キーボードにて数字入力ができない事、長さの制限がされていること、
小文字を入力した場合に大文字に自動変換されることを確認します。
以上、お疲れ様でした!