Làm thế nào để chỉ đặt giá trị số cho edittext trong Android?


209

Tôi có một edittexttrong đó tôi chỉ muốn chèn các giá trị nguyên. Ai đó có thể cho tôi biết tài sản nào tôi phải sử dụng không?

Câu trả lời:


403

Tôi đoán android:inputType="number"tại các thuộc tính XML.


11
Man, tôi yêu Android dev ... thật phiền phức khi có tùy chọn này trong các trang web!
Alex

14
Xin chào, trong Android 2.3.3, nó là "numberSign". Chỉ cần viết nó xuống đây, trong trường hợp ai đó đang tìm kiếm nó :)
Lemon Juice

Điều gì sẽ xảy ra nếu editText của tôi xuất hiện trong hộp thoại và do đó, tôi chỉ khai báo nó bằng mã .java? tức là hộp thoại editText không xuất hiện trong tệp XML. Làm thế nào tôi vẫn có thể đạt được điều này?
Đánh bạc Sibbs

1
Ngoài ra, bạn có thể sử dụng android:inputType="phone"thay thế điều đó. Nhưng có vẻ hơi "bận" hơn.
Chad Bingham

126

Ví dụ:

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

3
Đây là giải pháp tốt nhất!
RRTW

2
Tôi giả sử chuỗi nên đọc 0123456789.và không đọc0123456780.
audiFanatic

Điều này cũng hoạt động với android: inputType = "number"! Tôi cần nó để ngăn người dùng gõ các toán tử, dấu ngoặc đơn, v.v. trên bàn phím số. Thật là một sự cứu rỗi, anh bạn! Chào mừng đến với Costco; Tôi mến bạn!
gonzobrains

2
Điều này sẽ không cho phép bạn đặt số âm và đồng thời nó sẽ cho phép số thập phân trùng lặp. (Ví dụ: 1.1.1 .....)
Rushi Ayyappa

Đẹp, thêm android: chữ số cũng xử lý trường hợp sao chép và dán.
StoneLam

107

Trong mã, bạn có thể làm

ed_ins.setInputType(InputType.TYPE_CLASS_NUMBER);

@MohamedKhamis đó là tên của EditText
KERiii

1
Sourabh yêu cầu "Chỉ các giá trị nguyên được chèn". Điều này cho phép đầu vào nhiều hơn nữa.
Zon

30

Chỉ sử dụng chữ số đầu vào android:inputType="numberPassword"cùng vớieditText.setTransformationMethod(null); để loại bỏ tự động ẩn số.

HOẶC LÀ

android:inputType="phone"

Đối với chỉ đầu vào chữ số, tôi cảm thấy những cách này là tốt hơn android:inputType="number". Hạn chế của việc đề cập đến "số" là inputType là bàn phím cho phép chuyển sang các ký tự và cũng cho phép các ký tự đặc biệt khác được nhập. InputType "numberPassword" không có những vấn đề đó vì bàn phím chỉ hiển thị các chữ số. Ngay cả inputType "phone" cũng hoạt động vì bàn phím không cho phép bạn chuyển sang ký tự. Nhưng bạn vẫn có thể nhập một vài ký tự đặc biệt như +, /, N, v.v.

android: inputType = "numberPassword" với editText.setTransaturesMethod (null);

inputType = "numberPassword"

inputType = "phone"

inputType = "phone"

inputType = "số"

inputType = "số"


1
Đây là hoàn hảo! android:inputType="numberPassword"cùng vớieditText.setTransformationMethod(null);
coderpc

Mẹo này làm cho những gì ứng dụng của tôi được thực hiện hoàn hảo.
Kernelzero

6
android:inputType="numberDecimal"

5
Điều này thật tuyệt, nhưng hệ thống số nguyên không bao gồm bất kỳ số thập phân nào.
RileyE

@RileyE Ý của bạn là gì? Chúng tôi mới bắt đầu sử dụng điều này cho tất cả các đầu vào số của mình và tôi muốn đảm bảo rằng chúng tôi không thiếu thứ gì. Cảm ơn!
Joshua Pinter


2

sử dụng dưới đây có thể giải quyết vấn đề của bạn tốt hơn;

trong xml:

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

hoặc // trong hoạt động bên trong 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

Nếu bất cứ ai muốn chỉ sử dụng số từ 0 đến 9 với imeOptionskích hoạt thì hãy sử dụng dòng dưới đây trongEditText

android: inputType = "số | không"

Điều này sẽ chỉ cho phép số và nếu bạn nhấp vào nút thực hiện / tiếp theo của bàn phím, trọng tâm của bạn sẽ chuyển sang trường tiếp theo.


0

Bạn có thể sử dụng nó trong XML

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

hoặc là,

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

hoặc là,

android:inputType="phone"

Về mặt lập trình, bạn có thể sử dụng
editText.setInputType (InputType.TYPE_CLASS_NUMBER);


0

Tôi cần bắt nhấn Enter trên bàn phím bằng TextWatcher . Nhưng tôi phát hiện ra rằng tất cả các bàn phím số android: inputType = "number" hoặc "numberDecimal" hoặc "numberPassword", v.v. không cho phép tôi bắt Enter khi người dùng nhấn nó.

Tôi đã thử android:digits="0123456789\n"và tất cả các bàn phím số bắt đầu hoạt động với Enter và TextWatcher.

Vì vậy, cách của tôi là:

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

thêm editText.setTransformationMethod(null)

Cảm ơn barmaley và abhiank.


0

Tôi không biết câu trả lời đúng trong '13 là gì, nhưng hôm nay là:

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

Bạn nhận được mọi thứ, bao gồm bàn phím trên màn hình là bàn phím số.

Gần như tất cả mọi thứ. Espresso, trong trí tuệ vô hạn của nó, cho phép typeText("...")bỏ qua bộ lọc và nhập rác một cách không thể giải thích được ...


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.