色々試してみたのですが、EditTextそのものに入力制限をかけることは無理な
ようです。
EditTextの入力制限は、下記のようにandroid:inputType属性で設定します。
<EditText
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:inputType="textEmailAddress"
/>
この属性に設定できる値はInputTypeインターフェースで定義されていて、
数字のみを入力させたい場合などは、"number"などに指定してやればいいのです
が、その他のtext*と言う属性値の中に、アルファベット+記号のみと言う定義
が見つかりませんでした。
例えば、"textEmailAddress"を指定すれば、IMEは、自動的にアルファベット
キーボードを表示しますが、日本語キーボードに切り替えが可能で、ひらがな・
漢字の入力も出来てしまいます。
属性値の元となっている TYPE_CLASS_TEXT の定義に、英語と日本語の区別が
ないんじゃないかと思うのですが、、、どなたかくわしい方が居られたら教えて
下さい。
--
/*********************************************
有限会社シーリス
代表 有山 圭二
@Address
〒530-0044
大阪市北区東天満二丁目2番5号
第2新興ビル6F
@Web http://www.c-lis.co.jp
*********************************************/
TextVew.onTextChanged(...)メソッドで入力文字を全部ハンドリングしてやれば
完全なvalidationができるかも…
2010年10月4日19:55 magpad <takashi....@gmail.com>:
> --
> このメールは Google グループのグループ「日本Androidの会」の登録者に送られています。
> このグループに投稿するには、android-g...@googlegroups.com にメールを送信してください。
> このグループから退会するには、android-group-j...@googlegroups.com にメールを送信してください。
> 詳細については、http://groups.google.com/group/android-group-japan?hl=ja からこのグループにアクセスしてください。
>
>
setFiltersでInputFilterを登録してやればよい筈です。
ではでは
2010年10月4日20:01 adamrocker <adamr...@gmail.com>:
public class EditTextValidate extends Activity {
private InputFilter[] filters = { new MyFilter() };
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
EditText edittext = (EditText) findViewById(R.id.edittext);
edittext.setFilters(filters);
}
class MyFilter implements InputFilter {
@Override
public CharSequence filter(CharSequence source, int start, int end,
Spanned dest, int dstart, int dend) {
if( source.toString().matches("^[a-zA-Z0-9]+$") ){
return source;
}else{
return "";
}
}
}
}
2010/10/4 adamrocker <adamr...@gmail.com>: