EditText の入力チェック(1)

アプリケーションに入力チェックはつきものだ。Android のアプリケーションの場合、EditText で自由なユーザー入力を受け付ける場合が多い。EditText に入力チェックの機能がはじめからついていると便利なのだが、調べてみると入力チェックは自前で実装する必要があるようだ。
EditText で、レイアウトの XML に記述可能なアトリビュートを調べてみると、「android:inputType」や「android:maxLength」、「android:singleLine」、「android:maxLines」あたりを使えそうだ。それぞれの機能を調べてみた。

EditText のレイアウト XML で指定可能なアトリビュート

android:inputType

Android の API の説明によると、ユーザー入力を行いやすいようにインプットメソッドにヒントを与える目的で利用するようだ。複数指定も可能だが、入力値自体を制限するものではないため、入力値のチェックは別途行う必要がある。指定可能な値は、android.text.InputType クラスの説明に記述がある。

android:maxLength

Android の API の説明にあるように、インプットフィルターとして動作する。従って、指定した文字数以上は入力できなくなる。文字数を制限したい場合に利用できる。指定可能な値は、整数のみ。

android:singleLine

アトリビュート名が示すとおり、複数行の入力を受け付けなくするための指定。true に設定すると、改行コードが入力できなくなり EditText が複数行になることはなくなる。便利に見えるのだが、EditText 内の「文字列が」複数行にならないように制御するため、長い文字列を入力すると、EditText の横幅を超えて文字が表示された。改行コードが入力できなくなるだけならよいのだが、横幅を超える文字列があった場合、自動的に改行もしてくれなってしまった。
短い文字列を受け付けるときに、android:maxLength と android:singleLine を同時に指定して利用することになるだろう。指定可能な値は boolean で、API の説明はこちら

android:maxLines

アトリビュート名を見ると、入力可能な最大行数を指定できるように見えるのだが、実際には View の高さの指定。TextView(EditText のスーパークラス)で、表示可能な行数を指定しているだけなので、入力チェックには使えなかった。
指定可能な値は整数で、API の説明はこちら

次回は、実現できなかった入力チェックをコードで実現してみる。


コメントを残す

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

Time limit is exhausted. Please reload CAPTCHA.