Androidでedittextに数値のみを設定する方法は?


209

私が持っているedittext値が挿入されるように、整数れる私だけ欲しいです。誰かが私が使用しなければならないプロパティを教えてもらえますか?

回答:


403

android:inputType="number"はXML属性を推測します。


11
人間、私はAndroid開発が大好きです... Webページでこのオプションを取得するのはとても面倒です!
アレックス、

14
こんにちは、android 2.3.3では「numberSigned」です。誰かがそれを求めている場合に備えて、ここにそれを書き留めただけです:)
レモンジュース

editTextがダイアログに表示され、.javaコードでのみ宣言される場合はどうなりますか?つまり、ダイアログeditTextはXMLファイルに表示されません。どうすればこれを達成できますか?
Sibbsギャンブル

1
また、android:inputType="phone"その代わりに使用することもできます。しかし、少し「忙しい」ようです。
チャドビンガム2013

126

例えば:

<EditText
android:id="@+id/myNumber"
android:digits="0123456789."
android:inputType="numberDecimal"
/>

3
これが最善の解決策です!
RRTW 2013年

2
文字列は読み取るべきで0123456789.あり、そうでないはずです0123456780.
audiFanatic

これはandroid:inputType = "number"でも機能します。ユーザーが数字パッドで演算子や括弧などを入力できないようにするために必要でした。なんて命の恩人だ!コストコへようこそ。わたしは、あなたを愛しています!
ゴンゾブレーン14

2
これにより、負の数を入力できなくなり、同時に小数の重複が許可されます。(例:1.1.1 .....)
Rushi Ayyappa

android:digitsを追加すると、コピーして貼り付けることもできます。
StoneLam 2018

107

コードでは、次のことができます

ed_ins.setInputType(InputType.TYPE_CLASS_NUMBER);

@MohamedKhamisそれはEditTextの名前です
KERiii

1
Sourabhは、「挿入される整数値のみ」を要求しました。これにより、さらに多くの入力が可能になります。
Zon

30

数字のみを入力する場合は、android:inputType="numberPassword"とともに使用してeditText.setTransformationMethod(null);、番号の自動非表示を削除します。

または

android:inputType="phone"

数字のみの入力の場合、これらの2つの方法の方がに勝ると思いますandroid:inputType="number"。inputTypeとして「number」を指定することの制限は、キーボードが文字に切り替えることができ、他の特殊文字を入力できることです。キーボードには数字しか表示されないため、「numberPassword」inputTypeにはこれらの問題はありません。キーボードでは文字に切り替えることができないため、「電話」のinputTypeでも機能します。ただし、+、/、Nなどの特殊文字をいくつか入力することはできます。

android:inputType = "numberPassword" with editText.setTransformationMethod(null);

inputType = "numberPassword"

inputType = "phone"

inputType = "phone"

inputType = "number"

inputType = "number"


1
これは完璧です!android:inputType="numberPassword"とともにeditText.setTransformationMethod(null);
coderpc

このヒントにより、私のアプリケーションが完璧になります。
Kernelzero

6
android:inputType="numberDecimal"

5
これはすばらしいですが、整数システムには10進数は含まれていません。
RileyE 2013年

@RileyEこれはどういう意味ですか?これをすべての数値入力に使用し始めたばかりで、何かを欠落していないことを確認したいと思います。ありがとう!
Joshua Pinter


2

以下を使用すると、問題をよりよく解決できます。

XML:

<EditText
      android:id="@+id/age"
      android:inputType="numberDecimal|numberSigned"        />

または//etfield.addtextchangelistener内のアクティビティ

     private String blockCharacterSet="+(/)N,*;#";//declare globally
               try {
                for (int i = 0; i < s.length(); i++) {


                    if (blockCharacterSet.contains(s.charAt(i) + "")) {

                        String corrected_settempvalue = arrivalsettemp.substring(0, arrivalsettemp.length() - 1);
                        et_ArrivalSetTemp.setText(corrected_settempvalue);
                        if (corrected_settempvalue.length() != 0)
                            et_ArrivalSetTemp.setSelection(corrected_settempvalue.length());

                    }
                }
            } catch (Exception d) {
                d.printStackTrace();
            }

2

誰かがimeOptionsenableで0から9までの数字のみを使用したい場合は、以下の行を使用してくださいEditText

android:inputType = "number | none"

これは数字のみを許可し、キーボードの完了/次へボタンをクリックすると、フォーカスが次のフィールドに移動します。


0

XMLで使用できます

<EditText
 android:id="@+id/myNumber"
 android:digits="123"
 android:inputType="number"
/>

または、

android:inputType="numberPassword" along with editText.setTransformationMethod(null); to remove auto-hiding of the number.

または、

android:inputType="phone"

プログラムで
editText.setInputType(InputType.TYPE_CLASS_NUMBER);を使用できます。


0

TextWatcherでキーボードのEnterキーを押すのをキャッチする必要があります。しかし、すべての数字キーボードandroid:inputType = "number"または "numberDecimal"または "numberPassword"などでは、ユーザーがEnterキーを押したときにEnterをキャッチできないことがわかりました。

私が試したところandroid:digits="0123456789\n"、すべての数値キーボードがEnterとTextWatcherで動作し始めました。

だから私の方法は:

android:digits="0123456789\n"
android:inputType="numberPassword"

プラス editText.setTransformationMethod(null)

barmaleyとabhiankに感謝します。


0

13年の正解はわかりませんが、今日は次のようになっています。

myEditText.setKeyListener(DigitsKeyListener.getInstance(null, false, true)); // positive decimal numbers

オンスクリーンキーボードを含め、すべてがテンキーです。

ほとんど全部。エスプレッソは、その無限の知恵のなかで、どういうtypeText("...")わけかフィルターをバイパスしてゴミに入ります...


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.