Làm cách nào để hiển thị bàn phím số trên EditText trong Android?


146

Về cơ bản, tôi chỉ muốn chuyển sang chế độ bàn phím số ngay khi một EditText nào đó có tiêu điểm.


4
Câu hỏi không nêu cụ thể mong muốn thay đổi loại đầu vào được phép. Nó chỉ đơn giản là hỏi làm thế nào để thay đổi chế độ bàn phím, đó là điều tôi muốn làm mà không cần thay đổi loại đầu vào. Tất cả các câu trả lời giải thích làm thế nào để thay đổi loại đầu vào.
AlanKley

Kiểm tra câu trả lời của tôi về câu hỏi này stackoverflow.com/questions/39593324/ từ
Trợ giúp Android

Câu trả lời:


261

Bạn có thể định cấu hình inputTypecho EditText:

<EditText android:inputType="number" ... />

6
Cũng lưu ý rằng bạn cần nhắm mục tiêu Android 1.5 để sử dụng tính năng này (nó không khả dụng trong 1.1)
Wilka

4
Vấn đề là bạn không thể chuyển trở lại. Sử dụng "số | văn bản" cũng không hoạt động. Có vẻ như nếu bạn muốn hiển thị bàn phím số, bạn không thể cho phép nó chuyển trở lại văn bản.

Tôi đồng ý với Brian..nếu trường đầu tiên là alpha và trường tiếp theo là số, tôi không thể chuyển sang trường tiếp theo bằng nút 'Tiếp theo'!
Ahmed

Tôi có thể quay lại hay không phụ thuộc vào điện thoại. Của tôi cho phép nó.
Martin Clemens Bloch

Tôi muốn thay đổi số loại keybord và tôi muốn dán văn bản trong edittext. Làm thế nào để làm gì?
İbrahim YANIK

115

Để làm điều đó trong một tệp Java:

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

51

Tôi thấy việc triển khai này hữu ích, cho thấy một bàn phím tốt hơn và hạn chế ký tự đầu vào.

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

Ngoài ra, bạn có thể sử dụng android:maxLengthđể giới hạn số lượng tối đa.

Để làm điều này theo chương trình:

editText.setInputType(InputType.TYPE_CLASS_PHONE);

KeyListener keyListener = DigitsKeyListener.getInstance("1234567890");
editText.setKeyListener(keyListener);

Có cách nào để làm điều này lập trình? Chết để có được một bàn phím số lượng giới hạn cho EditText của tôi nhưng nó được thiết lập theo cách nó phải được tạo ra trong hoạt động.
Martin Erlic

18
<EditText
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    ...
    android:inputType="number|phone"/> 

sẽ hiển thị pad số lượng lớn như trình quay số.


11

Bạn có thể làm theo 2 cách

  1. Bộ thời gian chạy

    EditText input = new EditText(this);
    input.setInputType(InputType.TYPE_CLASS_NUMBER);
  2. Sử dụng XML

    <EditText
        ...
        android:inputType="number" />

5

Nếu bạn cần số phân số, thì đây là câu trả lời cho bạn:

android:inputType="numberDecimal"

4

Nếu bạn đang sử dụng EditText trong Hộp thoại hoặc tạo động và Bạn không thể đặt nó từ xml thì ví dụ này sẽ giúp bạn trong việc thiết lập loại bàn phím đó trong khi bạn đang sử dụng Chỉnh sửa văn bản, v.v.

myEditTxt.setInputType(InputType.TYPE_CLASS_NUMBER);

trong đó myEditTxt là đối tượng EDIT TEXT động (tên)


2
editText.setRawInputType(InputType.TYPE_CLASS_NUMBER);

Nếu bạn đang định dạng thủ công một văn bản (như đối với tiền tệ) và chỉ muốn kiểm soát bàn phím, đó là lựa chọn. Không lọc ký tự của bạn. Cảm ơn!
lauksas

Điều này làm việc như một cơ duyên đối với tôi. Tôi muốn hiển thị giá trị giữ chỗ văn bản khi một trường chưa được chỉnh sửa, nhưng vẫn hạn chế nhập vào số và hiển thị bàn phím bị hạn chế.
Alex Suzuki


2

Mã bên dưới sẽ chỉ cho phép các số "0123456789, ngay cả khi bạn vô tình gõ khác" 0123456789, chỉnh sửa văn bản sẽ không chấp nhận.

    EditText number1 = (EditText) layout.findViewById(R.id.edittext); 
    number1.setInputType(InputType.TYPE_CLASS_NUMBER|InputType.TYPE_CLASS_PHONE);
    number1.setKeyListener(DigitsKeyListener.getInstance("0123456789”));

Bạn nên thêm bình luận giải thích mã của mình và lý do tại sao nó là giải pháp
cyroxis

1

Sử dụng mã dưới đây trong tập tin java

editText.setRawInputType (Cấu hình.KEYBOARD_QWERTY);



0
EditText number1 = (EditText) layout.findViewById(R.id.edittext); 
number1.setInputType(InputType.TYPE_CLASS_NUMBER);

Nếu bạn có EditText number1 được tạo theo bố cục mã xml, thì nếu bạn muốn đặt Bàn phím số thành số1 EditText, bạn có thể thực hiện theo cách này bằng Mã Java.
Shiv Buyya
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.