TextView#setError
AndroidのTextViewクラスは最初からエラー処理のための機能を持っており、簡単に使用できる。
TextView ageText = (TextView)this.findViewById(R.id.TextView02); ageText.requestFocus(); ageText.setError("桁数を制限したら こんなことになってしまったよ。");
このコードをActivityの生成時に実行すると、以下のようにsetErrorメソッドでセットしたメッセージがポップアップとして表示される。
アイコンはデフォルトで赤色のエクスクラメーションがリソースとして登録されており、明示的に指定しなければこのアイコンが使用される。
それはいいんだが、問題はこのポップアップ表示だ。どうしてこんなことになってしまうのだろう。
考えられるのは、setErrorの対象としたTextViewクラスに対して桁数の制限(MaxLength)を設定していることである。(3桁)
調べてみると、このポップアップはTextView内部のErrorPopupクラスで実装されているのだが、これがまた公開されていないのである。
private static class ErrorPopup extends PopupWindow { private boolean mAbove = false; private TextView mView; ErrorPopup(TextView v, int width, int height) { super(v, width, height); mView = v; } 〜 }
ErrorPopupクラスのインスタンス自体か、せめて描画を制御するメソッドが公開されていればいけそうなんだが、このままじゃ使えないよな。