วิธีการตั้งค่าตัวเลขเท่านั้นสำหรับ edittext ใน Android?


209

ฉันมีสิ่งedittextที่ฉันต้องการแทรกค่าจำนวนเต็มเท่านั้น ใครสามารถบอกฉันว่าฉันต้องใช้ทรัพย์สินใด?

คำตอบ:


403

ฉันเดาandroid:inputType="number"คุณลักษณะ XML


11
ผู้ชายฉันรัก Android dev ... เอะอะที่จะได้รับตัวเลือกนี้ในหน้าเว็บ!
อเล็กซ์

14
สวัสดีใน Android 2.3.3 มันคือ "numberSigned" เพียงแค่เขียนมันลงที่นี่ในกรณีที่มีคนกำลังมองหามัน :)
น้ำมะนาว

จะเกิดอะไรขึ้นถ้าข้อความแก้ไขของฉันปรากฏในกล่องโต้ตอบและฉันจะประกาศเฉพาะในรหัส. java เช่นกล่องโต้ตอบ editText ไม่ปรากฏในไฟล์ XML ฉันจะทำสิ่งนี้สำเร็จได้อย่างไร?
การพนัน Sibbs

1
นอกจากนี้คุณสามารถใช้android:inputType="phone"แทน แต่ดูเหมือนว่า "ไม่ว่าง" อีกหน่อย
แช้ดบิงแฮม

126

ตัวอย่างเช่น:

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

3
นี่คือทางออกที่ดีที่สุด!
RRTW

2
ฉันคาดว่าสตริงควรอ่าน0123456789.และไม่0123456780.
audiFanatic

ใช้งานได้กับ Android: inputType = "number" เช่นกัน! ฉันต้องการมันเพื่อป้องกันไม่ให้ผู้ใช้พิมพ์ตัวดำเนินการวงเล็บ ฯลฯ บนแป้นตัวเลข ช่างเป็นอะไรที่ช่วยชีวิตมนุษย์! ยินดีต้อนรับสู่ Costco; ผมรักคุณ!
gonzobrains

2
นี่จะไม่อนุญาตให้คุณใส่จำนวนลบและในเวลาเดียวกันก็จะอนุญาตให้ใช้ทศนิยมซ้ำ (เช่น 1.1.1 ..... )
Rushi Ayyappa

ดีเพิ่ม android: ตัวเลขยังจัดการกับกรณีคัดลอกและวาง
StoneLam

107

ในรหัสคุณสามารถทำได้

ed_ins.setInputType(InputType.TYPE_CLASS_NUMBER);

@MohamedKhamis เป็นชื่อ EditText
KERiii

1
Sourabh ขอให้ "ใส่ค่าจำนวนเต็มเท่านั้น" ทำให้สามารถป้อนข้อมูลได้มากขึ้น
Zon

30

สำหรับการป้อนตัวเลขเท่านั้นใช้android:inputType="numberPassword"พร้อมกับeditText.setTransformationMethod(null);เพื่อลบการซ่อนตัวเลขโดยอัตโนมัติ

หรือ

android:inputType="phone"

android:inputType="number"เพียงป้อนข้อมูลตัวเลขผมรู้สึกเหล่านี้สองวิธีจะดีกว่า ข้อ จำกัด ในการกล่าวถึง "number" เป็น inputType คือแป้นพิมพ์อนุญาตให้สลับเป็นอักขระและอนุญาตให้ป้อนอักขระพิเศษอื่น ๆ ได้ "numberPassword" inputType ไม่มีปัญหาเหล่านั้นเนื่องจากคีย์บอร์ดจะแสดงตัวเลขเท่านั้น แม้กระทั่ง "phone" inputType ก็สามารถใช้งานได้เพราะคีย์บอร์ดไม่อนุญาตให้คุณสลับไปใช้ตัวอักษร แต่คุณยังสามารถป้อนอักขระพิเศษคู่เช่น +, /, N เป็นต้น

android: inputType = "numberPassword"พร้อมeditText.setTransformationMethod (null);

inputType = "numberPassword"

inputType = "โทรศัพท์"

inputType = "โทรศัพท์"

inputType = "จำนวน"

inputType = "จำนวน"


1
นี่คือสมบูรณ์แบบ! android:inputType="numberPassword"พร้อมด้วยeditText.setTransformationMethod(null);
coderpc

เคล็ดลับนี้ทำให้แอปพลิเคชันของฉันสมบูรณ์แบบ
Kernelzero

6
android:inputType="numberDecimal"

5
นี่ยอดเยี่ยม แต่ระบบจำนวนเต็มไม่รวมจำนวนทศนิยมใด ๆ
RileyE

@RileyE คุณหมายถึงอะไร เราเพิ่งเริ่มใช้สิ่งนี้กับอินพุตตัวเลขทั้งหมดของฉันและฉันต้องการให้แน่ใจว่าเราจะไม่พลาดบางสิ่งบางอย่าง ขอบคุณ!
Joshua Pinter


2

การใช้ด้านล่างสามารถแก้ปัญหาของคุณได้ดีขึ้น

ใน xml:

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

หรือ // ในกิจกรรมภายใน 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

หากใครต้องการใช้เฉพาะตัวเลขตั้งแต่ 0 ถึง 9 ด้วยการimeOptionsเปิดใช้งานให้ใช้บรรทัดด้านล่างในของคุณEditText

หุ่นยนต์: inputType = "จำนวน | ไม่มี"

การทำเช่นนี้จะอนุญาตเฉพาะหมายเลขและหากคุณคลิกที่ปุ่มเสร็จ / ปุ่มถัดไปของแป้นพิมพ์โฟกัสของคุณจะย้ายไปที่ฟิลด์ถัดไป


0

คุณสามารถใช้มันใน XML

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

หรือ,

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

หรือ,

android:inputType="phone"

โดยทางโปรแกรมคุณสามารถใช้
editText.setInputType (InputType.TYPE_CLASS_NUMBER);


0

ฉันต้องการที่จะจับการกด Enter บนแป้นพิมพ์ที่มีTextWatcher แต่ฉันพบว่าแป้นพิมพ์ตัวเลข Android ทั้งหมด: inputType = "number" หรือ "numberDecimal" หรือ "numberPassword" ฯลฯ ไม่อนุญาตให้ฉันจับ Enter เมื่อผู้ใช้กด

ฉันลองandroid:digits="0123456789\n"และแป้นพิมพ์ตัวเลขทั้งหมดเริ่มทำงานกับ Enter และ TextWatcher

ดังนั้นทางของฉันคือ:

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

บวก editText.setTransformationMethod(null)

ขอบคุณ barmaley และ abhiank


0

ฉันไม่รู้ว่าคำตอบที่ถูกต้องคืออะไรใน '13 แต่วันนี้มันเป็น:

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

คุณได้ทุกอย่างรวมถึงแป้นพิมพ์บนหน้าจอเป็นแป้นตัวเลข

เกือบทุกอย่าง เอสเพรสโซ่ในภูมิปัญญาที่ไม่มีที่สิ้นสุดของมันช่วยให้typeText("...")หลีกเลี่ยงอย่างลึกลับกรองและป้อนขยะ ...


โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.