Bagaimana cara menunjukkan papan tombol angka pada EditText di android?

146

Saya pada dasarnya hanya ingin beralih ke mode pad nomor segera setelah EditText tertentu memiliki fokus.

Chiwai Chan
sumber
4
Pertanyaannya tidak secara spesifik menyatakan keinginan untuk mengubah tipe input yang diizinkan. Itu hanya bertanya bagaimana mengubah mode keyboard yang ingin saya lakukan tanpa mengubah tipe input. Semua jawaban menjelaskan cara mengubah tipe input.
AlanKley
Periksa jawaban saya untuk pertanyaan ini stackoverflow.com/questions/39593324/…
Bantuan Android

Jawaban:

261

Anda dapat mengonfigurasi inputTypeuntuk EditText:

<EditText android:inputType="number" ... />
Josef Pfleger
sumber
6
Perhatikan juga bahwa Anda perlu menargetkan Android 1.5 untuk menggunakan ini (ini tidak tersedia di 1.1)
Wilka
4
Masalahnya adalah Anda tidak dapat beralih kembali. Menggunakan "angka | teks" juga tidak berfungsi. Tampaknya jika Anda ingin menampilkan keyboard angka, Anda tidak dapat membolehkannya kembali ke teks.
Saya setuju dengan Brian..jika bidang pertama alfa dan bidang berikutnya numerik, saya tidak bisa pergi ke bidang berikutnya menggunakan tombol 'Berikutnya'!
Ahmed
Apakah Anda dapat kembali atau tidak tergantung pada telepon saya pikir. Milik saya memungkinkan.
Martin Clemens Bloch
Saya ingin mengubah nomor jenis keybord dan saya ingin menempelkan teks di edittext. Bagaimana melakukan?
İbrahim YANIK
115

Untuk melakukannya dalam file Java:

EditText input = new EditText(this);
input.setInputType(InputType.TYPE_CLASS_NUMBER);
Dominic
sumber
51

Saya menemukan implementasi ini bermanfaat, menunjukkan keyboard yang lebih baik dan membatasi karakter input.

<EditText
    android:inputType="phone"
    android:digits="1234567890"
    ...
/>

Selain itu, Anda dapat menggunakan android:maxLengthuntuk membatasi jumlah angka maksimal.

Untuk melakukan ini secara terprogram:

editText.setInputType(InputType.TYPE_CLASS_PHONE);

KeyListener keyListener = DigitsKeyListener.getInstance("1234567890");
editText.setKeyListener(keyListener);
Matthijs
sumber
Apakah ada cara untuk melakukan ini secara terprogram? Sangat ingin mendapatkan papan ketik angka terbatas untuk EditText saya tetapi sudah diatur sedemikian rupa sehingga harus dihasilkan dalam aktivitas.
Martin Erlic
18
<EditText
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    ...
    android:inputType="number|phone"/> 

akan menampilkan tombol angka besar sebagai dialer.

Nguyen Minh Binh
sumber
11

Anda bisa melakukannya dengan 2 cara

  1. Set waktu runtime

    EditText input = new EditText(this);
    input.setInputType(InputType.TYPE_CLASS_NUMBER);
    
  2. Menggunakan XML

    <EditText
        ...
        android:inputType="number" />
    
Nirav Ranpara
sumber
5

Jika Anda membutuhkan nomor fraksional, maka ini adalah jawaban untuk Anda:

android:inputType="numberDecimal"
macio.Jun
sumber
4

Jika Anda menggunakan EditText dalam Dialog atau membuat secara dinamis dan Anda tidak dapat mengaturnya dari xml maka contoh ini akan membantu Anda dalam mengatur jenis papan kunci tersebut saat Anda menggunakan Edit Teks dinamis dll.

myEditTxt.setInputType(InputType.TYPE_CLASS_NUMBER);

di mana myEditTxt adalah objek EDIT TEXT dinamis (nama)

Pir Fahim Shah
sumber
2
editText.setRawInputType(InputType.TYPE_CLASS_NUMBER);
Aliya
sumber
Jika Anda memformat teks secara manual (seperti untuk mata uang) dan hanya ingin mengontrol keyboard, itulah pilihannya. Tidak akan memfilter karakter Anda. Terima kasih!
lauksas
Ini bekerja seperti pesona bagi saya. Saya ingin menampilkan nilai placeholder teks ketika bidang belum diedit, tetapi masih membatasi input ke angka dan menampilkan keyboard terbatas.
Alex Suzuki
2

Jenis dan detail masukan lebih banyak ditemukan di sini di situs web google

sai Gorantla
sumber
2

Kode di bawah ini hanya akan memungkinkan angka "0123456789", bahkan jika Anda secara tidak sengaja mengetik selain "0123456789", teks edit tidak akan menerima.

    EditText number1 = (EditText) layout.findViewById(R.id.edittext); 
    number1.setInputType(InputType.TYPE_CLASS_NUMBER|InputType.TYPE_CLASS_PHONE);
    number1.setKeyListener(DigitsKeyListener.getInstance("0123456789”));
Akhila Madari
sumber
Anda harus menambahkan komentar yang menjelaskan kode Anda dan mengapa itu solusinya
cyroxis
1

Gunakan kode di bawah ini dalam file java

editText.setRawInputType (Configuration.KEYBOARD_QWERTY);

Darshuu
sumber
0

Tentukan ini dalam kode xml Anda

android:inputType="number"
fulgen
sumber
0
EditText number1 = (EditText) layout.findViewById(R.id.edittext); 
number1.setInputType(InputType.TYPE_CLASS_NUMBER);
Shiv Buyya
sumber
Jika Anda memiliki EditText number1 yang dibuat dalam kode tata letak xml, maka jika Anda ingin mengatur Keyboard Angka ke number1 EditText, Anda dapat melakukannya dengan menggunakan Java Code.
Shiv Buyya