ฉันจะแสดงแป้นพิมพ์ตัวเลขบน EditText ใน android ได้อย่างไร


146

ฉันแค่ต้องการเปลี่ยนเป็นโหมดแป้นตัวเลขในไม่ช้า EditText บางตัวมีโฟกัส


4
คำถามไม่ได้ระบุความต้องการที่จะเปลี่ยนประเภทอินพุตที่ได้รับอนุญาตโดยเฉพาะ มันจะถามวิธีการเปลี่ยนโหมดคีย์บอร์ดซึ่งเป็นสิ่งที่ฉันต้องการโดยไม่เปลี่ยนประเภทอินพุต คำตอบทั้งหมดอธิบายวิธีเปลี่ยนประเภทอินพุต
AlanKley

ตรวจสอบคำตอบของฉันสำหรับคำถามนี้stackoverflow.com/questions/39593324/…
Android ความช่วยเหลือ

คำตอบ:


261

คุณสามารถกำหนดค่าinputTypeสำหรับEditText:

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

6
นอกจากนี้โปรดทราบว่าคุณต้องกำหนดเป้าหมาย Android 1.5 เพื่อใช้งานสิ่งนี้ (ไม่มีให้ใน 1.1)
Wilka

4
ปัญหาคือคุณไม่สามารถสลับกลับได้ การใช้ "number | text" ไม่ทำงานเช่นกัน ดูเหมือนว่าหากคุณต้องการแสดงแป้นพิมพ์ตัวเลขคุณไม่สามารถอนุญาตให้เปลี่ยนกลับเป็นข้อความได้

ฉันเห็นด้วยกับ Brian .. หากฟิลด์แรกคืออัลฟาและฟิลด์ถัดไปเป็นตัวเลขฉันไม่สามารถไปที่ฟิลด์ถัดไปได้โดยใช้ปุ่ม 'ถัดไป'!
อาเหม็ด

คุณสามารถย้อนกลับไปหรือไม่ขึ้นอยู่กับโทรศัพท์ที่ฉันคิด ฉันอนุญาตให้มัน
Martin Clemens Bloch

ฉันต้องการเปลี่ยนหมายเลขชนิดของแป้นพิมพ์และฉันต้องการวางข้อความใน edittext วิธีการทำ?
rahbrahim YANIK


51

ฉันพบว่าการใช้งานนี้มีประโยชน์แสดงแป้นพิมพ์ที่ดีขึ้นและ จำกัด การป้อนข้อมูล

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

นอกจากนี้คุณสามารถใช้android:maxLengthเพื่อ จำกัด จำนวนสูงสุด

เมื่อต้องการทำสิ่งนี้โดยทางโปรแกรม:

editText.setInputType(InputType.TYPE_CLASS_PHONE);

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

มีวิธีการทำโปรแกรมนี้หรือไม่? กำลังจะได้แป้นพิมพ์ตัวเลขที่ จำกัด สำหรับ EditText ของฉัน แต่มันตั้งค่าในลักษณะที่จะต้องสร้างขึ้นในกิจกรรม
Martin Erlic


11

คุณสามารถทำได้ 2 วิธี

  1. ชุดรันไทม์

    EditText input = new EditText(this);
    input.setInputType(InputType.TYPE_CLASS_NUMBER);
    
  2. ใช้ XML

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

5

หากคุณต้องการเลขเศษส่วนนี่คือคำตอบสำหรับคุณ:

android:inputType="numberDecimal"

4

หากคุณใช้ EditText ของคุณในกล่องโต้ตอบหรือสร้างแบบไดนามิกและคุณไม่สามารถตั้งค่าได้จาก xml ตัวอย่างนี้จะช่วยคุณในการตั้งค่าประเภทของบอร์ดคีย์ในขณะที่คุณใช้แก้ไขข้อความแบบไดนามิก ฯลฯ

myEditTxt.setInputType(InputType.TYPE_CLASS_NUMBER);

โดยที่ myEditTxt เป็นวัตถุ EDIT TEXT แบบไดนามิก (ชื่อ)


2
editText.setRawInputType(InputType.TYPE_CLASS_NUMBER);

หากคุณกำลังจัดรูปแบบข้อความด้วยตนเอง (เช่นสำหรับสกุลเงิน) และต้องการควบคุมเพียงแป้นพิมพ์นั่นเป็นตัวเลือก จะไม่กรองตัวอักษรของคุณ ขอบคุณ!
lauksas

สิ่งนี้ได้ผลเหมือนมนต์เสน่ห์สำหรับฉัน ฉันต้องการแสดงค่าตัวยึดตำแหน่งต้นฉบับเมื่อยังไม่ได้แก้ไขฟิลด์ แต่ยัง จำกัด การป้อนข้อมูลให้เป็นตัวเลขและแสดงแป้นพิมพ์แบบ จำกัด
อเล็กซ์ซูซูกิ


2

รหัสด้านล่างจะอนุญาตให้ใช้หมายเลข "0123456789" เท่านั้นแม้ว่าคุณจะพิมพ์โดยไม่ได้ตั้งใจมากกว่า "0123456789" การแก้ไขข้อความจะไม่ยอมรับ

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

คุณควรเพิ่มความเห็นอธิบายรหัสของคุณและทำไมจึงเป็นทางออก
cyroxis



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

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