bagaimana cara menetapkan hanya nilai numerik untuk edittext di android?


209

Saya memiliki edittextdi mana saya hanya ingin memasukkan nilai integer. Adakah yang bisa memberitahu saya properti mana yang harus saya gunakan?

Jawaban:


403

Saya kira android:inputType="number"atribut XML.


11
Sobat, saya suka Android dev ... keributan untuk mendapatkan opsi ini di halaman web!
Alex

14
Hai, di android 2.3.3, ini "numberSigned". Cukup tuliskan di sini, kalau-kalau ada yang mencarinya :)
Lemon Juice

Bagaimana jika editText saya muncul di dialog, dan dengan demikian, saya hanya mendeklarasikannya dalam kode .java? yaitu dialog editText tidak muncul dalam file XML. Bagaimana saya masih bisa mencapai ini?
Sibbs Gambling

1
Selain itu, Anda bisa menggunakannya android:inputType="phone"sebagai gantinya. Tapi sepertinya sedikit lebih "sibuk".
Chad Bingham

126

Sebagai contoh:

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

3
Ini solusi terbaik!
RRTW

2
Saya berasumsi bahwa string seharusnya dibaca 0123456789.dan tidak0123456780.
audiFanatic

Ini bekerja dengan android: inputType = "number" juga! Saya membutuhkannya untuk mencegah pengguna mengetik operator, tanda kurung, dll pada papan nomor. Sungguh penyelamat, Bung! Selamat datang di Costco; Aku cinta kamu!
gonzobrains

2
Ini tidak akan memungkinkan Anda untuk meletakkan angka negatif dan pada saat yang sama akan memungkinkan desimal duplikat (mis .: 1.1.1 .....)
Rushi Ayyappa

Bagus, menambahkan android: digit juga menangani case copy-and-paste.
StoneLam

107

Dalam kode, Anda bisa melakukannya

ed_ins.setInputType(InputType.TYPE_CLASS_NUMBER);

@MohamedKhamis adalah nama EditText
KERiii

1
Sourabh meminta "Hanya nilai integer yang akan dimasukkan". Ini memungkinkan untuk memasukkan lebih banyak.
Zon

30

Hanya untuk penggunaan input digit android:inputType="numberPassword"bersama dengan editText.setTransformationMethod(null);untuk menghapus menyembunyikan nomor secara otomatis.

ATAU

android:inputType="phone"

Untuk input digit saja, saya merasa cara pasangan ini lebih baik daripada android:inputType="number" . Batasan menyebutkan "angka" sebagai inputType adalah keyboard memungkinkan untuk beralih ke karakter dan juga memungkinkan karakter khusus lainnya dimasukkan. inputType "numberPassword" tidak memiliki masalah tersebut karena keyboard hanya menampilkan angka. Bahkan inputType "telepon" berfungsi karena keyboard tidak memungkinkan Anda untuk beralih ke karakter. Tetapi Anda masih dapat memasukkan beberapa karakter khusus seperti +, /, N, dll.

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

inputType = "numberPassword"

inputType = "telepon"

inputType = "telepon"

inputType = "number"

inputType = "number"


1
Ini sempurna! android:inputType="numberPassword"bersama denganeditText.setTransformationMethod(null);
coderpc

tip ini membuat aplikasi saya menjadi sempurna.
Kernelzero

6
android:inputType="numberDecimal"

5
Ini bagus, tetapi sistem bilangan bulat tidak menyertakan angka desimal.
RileyE

@RileyE Apa maksudmu dengan ini? Kami baru saja mulai menggunakan ini untuk semua input numerik kami dan saya ingin memastikan bahwa kami tidak melewatkan sesuatu. Terima kasih!
Joshua Pinter


2

menggunakan di bawah ini dapat memecahkan masalah Anda dengan lebih baik;

dalam xml:

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

atau // dalam aktivitas di dalam 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

Jika ada yang ingin hanya menggunakan angka dari 0 hingga 9 dengan imeOptionsmengaktifkan maka gunakan baris di bawah ini diEditText

android: inputType = "number | none"

Ini hanya akan memungkinkan angka dan jika Anda mengklik tombol keyboard selesai / berikutnya fokus Anda akan pindah ke bidang berikutnya.


0

Anda bisa menggunakannya dalam XML

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

atau,

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

atau,

android:inputType="phone"

Secara terprogram Anda dapat menggunakan
editText.setInputType (InputType.TYPE_CLASS_NUMBER);


0

Saya perlu menangkap menekan Enter pada keyboard dengan TextWatcher . Tapi saya menemukan bahwa semua keyboard numerik android: inputType = "number" atau "numberDecimal" atau "numberPassword" dll tidak mengizinkan saya menangkap Enter saat pengguna menekannya.

Saya mencoba android:digits="0123456789\n"dan semua keyboard numerik mulai bekerja dengan Enter dan TextWatcher.

Jadi cara saya adalah:

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

plus editText.setTransformationMethod(null)

Terima kasih kepada barmaley dan abhiank.


0

Saya tidak tahu apa jawaban yang benar di '13, tapi hari ini jawabannya:

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

Anda mendapatkan semuanya, termasuk keyboard di layar adalah keypad numerik.

Hampir semuanya. Espresso, dalam kebijaksanaannya yang tak terbatas, memungkinkan typeText("...")memintas filter dan memasukkan sampah ...


Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.