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?

Sourabh
sumber

Jawaban:

403

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

Utyi
sumber
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"
/>
Barmaley Red Star
sumber
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);
Sourabh
sumber
@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"

abhiank
sumber
1
Ini sempurna! android:inputType="numberPassword"bersama denganeditText.setTransformationMethod(null);
coderpc
tip ini membuat aplikasi saya menjadi sempurna.
Kernelzero
6
android:inputType="numberDecimal"
Nafiz
sumber
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
4
<EditText
android:id="@+id/age"
android:numeric="integer" 
/>
Sandeep V
sumber
3
android: numeric sudah tidak digunakan lagi sejak API 3, lihat jawaban untuk stackoverflow.com/questions/12625380/…
winne2
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();
            }
Rushi Ayyappa
sumber
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.

Sandeep
sumber
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);

Rubela Shome
sumber
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.

Alexander Key
sumber
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 ...

Phlip
sumber
-4

yang paling sederhana bagi saya

android:numeric="integer" 

Meskipun ini juga lebih banyak menyesuaikan

android:digits="0123456789"
Henry Simon
sumber
android: numeric sudah tidak digunakan lagi sejak API 3, lihat jawaban untuk stackoverflow.com/questions/12625380/…
winne2