EditTextの入力制限の件

12,627 views
Skip to first unread message

はち@Yuichi_Otsubo

unread,
Oct 3, 2010, 10:11:24 PM10/3/10
to 日本Androidの会
お世話になっております。

EditTextで日本語入力をさせたくないのですが、
禁止する方法をご存じの方、ご教授頂けませんでしょうか。

ディレクトリ名、ファイル名入力時に日本語を禁止させたいです。
英数字入力のみ入力させることが目的です。

宜しくお願い致します。

Keiji Ariyama

unread,
Oct 4, 2010, 6:29:23 AM10/4/10
to android-g...@googlegroups.com, "はち@Yuichi_Otsubo"
有山@大阪です。

 色々試してみたのですが、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
*********************************************/

magpad

unread,
Oct 4, 2010, 6:55:57 AM10/4/10
to 日本Androidの会
こんにちは

非常に美しくない方法ですが、EditTextのandroid:digitsに使用可能な文字を入れるとそれっぽくなります。
ちゃんとやるならKeyListenerとか使うべきなんでしょうけども・・・。

android:inputType="text"
android:digits="0123456789abcdefghijklmnopqrstuvwxyz"

とすると[0-9a-z]しか入力できなくなるぽいです。(少なくともsimejiでは)


On 10月4日, 午前11:11, はち@Yuichi_Otsubo <our.dream.comes.t...@gmail.com>
wrote:

adamrocker

unread,
Oct 4, 2010, 7:01:46 AM10/4/10
to android-g...@googlegroups.com
こんばんわ

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 からこのグループにアクセスしてください。
>
>

sakamoto toshiyuki

unread,
Oct 4, 2010, 8:43:10 AM10/4/10
to android-g...@googlegroups.com
坂本といいます。こんばんは。

setFiltersでInputFilterを登録してやればよい筈です。

ではでは


2010年10月4日20:01 adamrocker <adamr...@gmail.com>:

aoi nakanishi

unread,
Oct 4, 2010, 9:11:22 AM10/4/10
to android-g...@googlegroups.com
はじめまして、中西( @n_aoi )と申します。
こんな感じでfilterを使う方法はいかがでしょうか?

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>:

はち@Yuichi_Otsubo

unread,
Oct 4, 2010, 8:17:44 PM10/4/10
to 日本Androidの会
有山@大阪さん、magpadさん、adamrockerさん、坂本さん、中西さん

返信ありがとうございました。

基本的に入力モードの切り替えを止めることは、
できなさそうですね。
教えて頂きました、setFiltersで実装します。

お忙しいところ、ありがとうございました。
失礼いたします。


On 10月4日, 午後10:11, aoi nakanishi <aoi.nakani...@gmail.com> wrote:
> はじめまして、中西( @n_aoi )と申します。
> こんな感じでfilterを使う方法はいかがでしょうか?
>
> 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 <adamroc...@gmail.com>:
>
>
>
> > こんばんわ
>
> > TextVew.onTextChanged(...)メソッドで入力文字を全部ハンドリングしてやれば
> > 完全なvalidationができるかも…
>
> > 2010年10月4日19:55 magpad <takashi.murama...@gmail.com>:
Reply all
Reply to author
Forward
0 new messages