Programming Style

メニュー

初心者がアプリ開発者になるためのプログラミング学習サイト

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

android_android-edittext-keyboard_01

EditTextには、数字用、日付用、パスワード用、Eメールアドレス用、などの複数の入力タイプがあります。これらのタイプによって入力できる文字が決まります。ソフトウェアキーボードもそれぞれに合ったものに最適化されます。ここでは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);

実行すると以下のような画面が表示されます。

 

android_android-edittext-keyboard_01

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_android-edittext-keyboard_02

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"/>

 

広 告