EditTextの入力制限を行う


EditTextのInputType(入力制限/値のバリエーション指定)を紹介します。EditTextは ClipboardManagerを使用してテキストのコピーと貼り付けを行う(Android3.0版) や AlertDialogで文字を入力する(2) – カスタムダイアログ などUIを構成するウィジェットとしてなくてはならないコンポーネントです。

今回は入力制限/値のバリエーションについて、わかりやすく一覧表(後述)にまとめました。入力値の設定方法、使い方、サンプルコードは以下の通りです。

  • EditText#setInputType(int type)

EditText#setInputTypeメソッドを使い様々な入力規則、種類を表現することができます。引数int typeはandroid.text.InputTypeを使います。以下のサンプルのように複数の設定をOR演算で与えることが可能です(ビット演算可能)

パスワードの入力の場合: et.setInputType( InputType.TYPE_CLASS_TEXT |
InputType.TYPE_TEXT_VARIATION_PASSWORD);

import android.text.InputType;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        EditText et = (EditText)findViewById(R.id.editText1);
        //パスワード入力
        et.setInputType( InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PASSWORD);

    }

InputTypeまとめ

以下にInputTypeをClass、バリエーション、フラグでまとめました。続きからどうぞ

InputType Class

クラスの種類と特殊な値。CLASSは入力の種類、TYPE_NULLはリッチな入力環境を持たない端末向けに利用します。

クラス名 説明
TYPE_CLASS_DATETIME 日付と時刻
TYPE_CLASS_NUMBER 数値
TYPE_CLASS_PHONE 電話番号
TYPE_CLASS_TEXT 文字列
TYPE_NULL 端末側の入力メソッドが制限されている場合

InputType BitMask

クラスとフラグ、バリエーションの判断のためのビットマスク

マスク名 説明
TYPE_MASK_CLASS クラスを取得するためのマスク値
TYPE_MASK_FLAGS フラグを取得するためのマスク値
TYPE_MASK_VARIATION 入力制限を取得するためのマスク値

InputType Date Variation

日付と時刻のバリエーション

日付と時刻のバリエーション 説明
TYPE_DATETIME_VARIATION_DATE 標準設定:日付入力
TYPE_DATETIME_VARIATION_NORMAL 標準設定:日付と時刻の入力
TYPE_DATETIME_VARIATION_TIME 標準設定:時刻

InputType Number Flag/Variation

数値入力フラグとバリエーション。HONEYCOMBよりバリエーションが追加され、パスワード入力に対応しました

フラグ、バリエーション 説明
TYPE_NUMBER_FLAG_DECIMAL 10進数の入力
TYPE_NUMBER_FLAG_SIGNED 符号付き数値の入力
TYPE_NUMBER_VARIATION_NORMAL 標準設定:通常の数値入力。HONEYCOMBより追加
TYPE_NUMBER_VARIATION_PASSWORD 標準設定:パスワード入力。 HONEYCOMBより追加

InputType Text Flag

文字列入力のフラグ。大文字、小文字の制御など英語圏向けの機能が多いですが、オートコンプリート機能、入力候補非表示など細かな変更ができます。

フラグ名 説明
TYPE_TEXT_FLAG_AUTO_COMPLETE オートコンプリート機能
TYPE_TEXT_FLAG_AUTO_CORRECT 文字列の自動修正機能
TYPE_TEXT_FLAG_CAP_CHARACTERS 大文字で入力
TYPE_TEXT_FLAG_CAP_SENTENCES 文章の先頭を大文字で入力
TYPE_TEXT_FLAG_CAP_WORDS 単語の先頭を大文字で入力
TYPE_TEXT_FLAG_IME_MULTI_LINE 複数行入力。フルスクリーンでのIME入力が可能な場合に推奨
TYPE_TEXT_FLAG_MULTI_LINE 複数行入力
TYPE_TEXT_FLAG_NO_SUGGESTIONS 入力候補の非表示

InputType Text Variation

文字列入力のバリエーション。HONEYCOMBよりWebフォームのEmailアドレス/パスワード入力が追加されました。

バリエーション名 説明
TYPE_TEXT_VARIATION_EMAIL_ADDRESS Emailアドレス
TYPE_TEXT_VARIATION_EMAIL_SUBJECT Emailのサブジェクト(題名)
TYPE_TEXT_VARIATION_FILTER リストなどのコンテンツでフィルタされた文字列
TYPE_TEXT_VARIATION_LONG_MESSAGE Emailの本文など長い文章入力
TYPE_TEXT_VARIATION_NORMAL 標準設定:プレーンテキストの入力
TYPE_TEXT_VARIATION_PASSWORD パスワード入力
TYPE_TEXT_VARIATION_PERSON_NAME 人名の入力
TYPE_TEXT_VARIATION_PHONETIC コンタクトリストの" phonetic name field"など音声認識用
TYPE_TEXT_VARIATION_POSTAL_ADDRESS 住所入力
TYPE_TEXT_VARIATION_SHORT_MESSAGE インスタントメッセージ、ショートメッセージの入力
TYPE_TEXT_VARIATION_URI URI入力
TYPE_TEXT_VARIATION_VISIBLE_PASSWORD 可視状態でのパスワード入力
TYPE_TEXT_VARIATION_WEB_EDIT_TEXT Webフォームのテキスト入力
TYPE_TEXT_VARIATION_WEB_EMAIL_ADDRESS WebフォームのEmailアドレス入力。HONEYCOMBより追加
TYPE_TEXT_VARIATION_WEB_PASSWORD Webフォーム内のパスワード入力。HONEYCOMBより追加

以上で全てです。TYPE_NUMBER_VARIATION_PASSWORDやTYPE_TEXT_VARIATION_WEB_EMAIL_ADDRESSなどHONEYCOMBから追加されたタイプもあり、都度追加されています。

android.text.InputType
http://developer.android.com/reference/android/text/InputType.html