[Android] EditText:キーボードのタイプを指定する

EditTextには、数字用、日付用、パスワード用、Eメールアドレス用、などの複数の入力タイプがあります。これらのタイプによって入力できる文字が決まります。ソフトウェアキーボードもそれぞれに合ったものに最適化されます。ここではEditTextを使ってテキスト入力時に表示されるキーボードの指定方法について説明します。
広 告
目次
前提条件
- 「EditText:テキストフィールドを表示する」を理解していること
動作確認端末
- Google Nexus 7 – 5.1.1 – API22(実機)
1. キーボードのタイプを指定する
キーボードのタイプを指定するためには、<EditText>タグにandroid:inputType属性を使います。例えば、Eメールアドレスを入力させたい場合は、"textEmailAddress"
を以下のように指定します。
android:inputType属性を使ったサンプルコード
<EditText android:id="@+id/editText" android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="@string/hint" android:inputType="textEmailAddress"/>
Javaコードで記述する場合はsetInputType(int type)を使用します。引数にはInputTypeクラスの定数が利用できます。
setInputType(int type)を使ったサンプルコード
final EditText editText = (EditText) findViewById(R.id.editText); editText.setInputType(InputType. TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_EMAIL_ADDRESS);
実行すると以下のような画面が表示されます。

Eメールアドレス用のキーボードに@
マークが表示されています。android:inputType
属性の値として他にも以下のような値があります。
“text”
通常テキストを入力する時に指定します。
“textUri”
URLを入力する時に指定します。通常のキーボードに「/」が追加されます。
“number”
数値を入力する場合に指定します。
“phone”
電話番号を入力するときに指定します。携帯電話型のキーボードになります。
android:inputType
属性の値に対応するsetInputType(int type)の引数については公式ドキュメントを参照して下さい。
2. キーボード入力時の挙動を指定する
android:inputType
属性では、新しくキーボード入力された文字はすべて大文字にする、文字をすべてドット表示にする(パスワードで入力した文字を伏せる)、等などの挙動を指定することが出来ます。例えば、入力された文字をすべてドット表示にするコードを以下のようになります。
入力文字をドット表示にするサンプルコード
<EditText android:id="@+id/editText" android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="@string/password" android:inputType="textPassword"/>
テキスト入力をすると以下のように表示されます。

android:inputType
属性の値として他にも以下のような値で挙動を指定できます。
“textCapSentences”
先頭の文字のみを大文字にする時に指定します。
“textCapWords”
単語の先頭文字のみを大文字にする時に指定します。
“textAutoCorrect”
文字のスペルミスを自動で修正する時に指定します。
“textMultiLine”
複数行を入力する時に指定します。
android:inputType
属性の値を複数設定したい場合は「 |
」を使って値を繋げることで可能になります。
android:inputType属性を複数設定するサンプルコード
<EditText android:id="@+id/editText" android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="@string/email" android:inputType="textEmailAddress|textCapSentences"/>