android'de edittext için sadece sayısal değer nasıl ayarlanır?


209

Ben edittextsadece tamsayı değerleri eklenmesini istiyorum bir var. Birisi bana hangi mülkü kullanmam gerektiğini söyleyebilir mi?

Yanıtlar:


403

android:inputType="number"XML öznitelikleri sanırım .


11
Adamım, Android geliştirici seviyorum ... web sayfalarında bu seçeneği almak için böyle bir yaygara!
Alex

14
Merhaba, android 2.3.3, "numberSigned" dir. Birisi arıyor olması durumunda, sadece buraya yazdı :)
Lemon Juice

Düzenlemem iletişim kutusunda görünür ve bu nedenle, yalnızca .java kodunda bildirirsem ne olur? yani editText iletişim kutusu XML dosyasında görünmez. Buna nasıl ulaşabilirim?
Sibbs Kumar

1
Buna ek olarak, bunun yerine kullanabilirsiniz android:inputType="phone". Ama biraz daha "meşgul" görünüyor.
Chad Bingham

126

Örneğin:

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

3
Bu en iyi çözüm!
RRTW

2
Dize okumak gerekir 0123456789.ve değil varsayıyorum0123456780.
audiFanatic

Bu android ile çalışır: inputType = "number" da! Kullanıcıların sayısal tuş takımına operatör, parantez vb. Yazmasını önlemek için buna ihtiyacım vardı. Ne hayat kurtarıcı dostum! Costco'ya Hoşgeldiniz; Seni seviyorum!
gonzobrains

2
Bu, negatif sayılar koymanıza izin vermez ve aynı zamanda yinelenen ondalık sayılara izin verir. (
Örn

Güzel, android ekleyerek: rakamlar da kopyala ve yapıştır durumunu işler.
StoneLam

107

Kodda, yapabilirsin

ed_ins.setInputType(InputType.TYPE_CLASS_NUMBER);

@MohamedKhamis, EditText'in adı
KERiii

1
Sourabh "Yalnızca tamsayı değerleri eklenecek" istedi. Bu çok daha fazla girdi sağlar.
Zon

30

Yalnızca rakam girişi için , numaranın otomatik gizlenmesini kaldırmak için tuşuyla android:inputType="numberPassword"birlikte kullanın editText.setTransformationMethod(null);.

VEYA

android:inputType="phone"

Sadece rakam girişi için, bu çift yolların daha iyi olduğunu hissediyorum android:inputType="number". İnputType olarak "sayı" dan bahsetmenin sınırlaması, klavyenin karakterlere geçmesine ve diğer özel karakterlerin girilmesine izin vermesidir. Klavye yalnızca rakamları gösterdiğinden "numberPassword" inputType bu sorunları içermez. "Telefon" inputType bile klavye karakterlere geçiş yapmanıza izin vermediği için çalışır. Ancak yine de +, /, N vb.Gibi birkaç özel karakter girebilirsiniz.

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

InputType = "numberPassword"

InputType = "telefon"

InputType = "telefon"

InputType = "sayı"

InputType = "sayı"


1
Bu harika! android:inputType="numberPassword"ile birlikteeditText.setTransformationMethod(null);
coderpc

bu ipucu uygulamamın mükemmel hale getirilmesini sağlar.
Kernelzero

6
android:inputType="numberDecimal"

5
Bu harika, ama Tamsayı sayı sistemi ondalık sayı içermiyor.
RileyE

Bununla ne demek istiyorsun? Bunu tüm sayısal girdilerimiz için kullanmaya başladık ve bir şey eksik olmadığından emin olmak istiyorum. Teşekkürler!
Joshua Pinter


2

Aşağıdakileri kullanmak sorununuzu daha iyi çözebilir;

xml biçiminde:

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

veya // etfield.addtextchangelistener içindeki etkinliklerde

     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

Eğer birisi sadece 0 ile 9 arasında imeOptionsenable ile birlikte sayı kullanmak istiyorsa ,EditText

android: InputType = "sayı | hiçbiri"

Bu yalnızca sayıya izin verir ve klavyenin bitmiş / sonraki düğmesine tıklarsanız odağınız bir sonraki alana geçer.


0

XML'de kullanabilirsiniz

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

veya,

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

veya,

android:inputType="phone"

Programlı olarak
editText.setInputType (InputType.TYPE_CLASS_NUMBER) kullanabilirsiniz;


0

TextWatcher ile bir klavyede Enter tuşuna basarak yakalamam gerekiyor . Ancak tüm sayısal klavyelerin android olduğunu öğrendim: inputType = "number" veya "numberDecimal" veya "numberPassword" vb.

Denedim android:digits="0123456789\n"ve tüm sayısal klavyeler Enter ve TextWatcher ile çalışmaya başladı.

Benim yolum:

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

artı editText.setTransformationMethod(null)

Barmaley ve abhiank'a teşekkürler.


0

'13'te doğru cevabın ne olduğunu bilmiyorum, ama bugün:

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

Ekran klavyesi de dahil olmak üzere her şey sayısal bir tuş takımıdır.

Neredeyse her şey. Espresso, sonsuz bilgeliğiyle, typeText("...")filtreyi açık bir şekilde atlatır ve çöpe girer ...


Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.