ฉันมีสิ่งedittext
ที่ฉันต้องการแทรกค่าจำนวนเต็มเท่านั้น ใครสามารถบอกฉันว่าฉันต้องใช้ทรัพย์สินใด?
ฉันมีสิ่งedittext
ที่ฉันต้องการแทรกค่าจำนวนเต็มเท่านั้น ใครสามารถบอกฉันว่าฉันต้องใช้ทรัพย์สินใด?
คำตอบ:
ฉันเดาandroid:inputType="number"
คุณลักษณะ XML
android:inputType="phone"
แทน แต่ดูเหมือนว่า "ไม่ว่าง" อีกหน่อย
ตัวอย่างเช่น:
<EditText
android:id="@+id/myNumber"
android:digits="0123456789."
android:inputType="numberDecimal"
/>
0123456789.
และไม่0123456780.
สำหรับการป้อนตัวเลขเท่านั้นใช้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 = "โทรศัพท์"
inputType = "จำนวน"
android:inputType="numberPassword"
พร้อมด้วยeditText.setTransformationMethod(null);
android:inputType="numberDecimal"
<EditText
android:id="@+id/age"
android:numeric="integer"
/>
การใช้ด้านล่างสามารถแก้ปัญหาของคุณได้ดีขึ้น
ใน 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();
}
หากใครต้องการใช้เฉพาะตัวเลขตั้งแต่ 0 ถึง 9 ด้วยการimeOptions
เปิดใช้งานให้ใช้บรรทัดด้านล่างในของคุณEditText
หุ่นยนต์: inputType = "จำนวน | ไม่มี"
การทำเช่นนี้จะอนุญาตเฉพาะหมายเลขและหากคุณคลิกที่ปุ่มเสร็จ / ปุ่มถัดไปของแป้นพิมพ์โฟกัสของคุณจะย้ายไปที่ฟิลด์ถัดไป
คุณสามารถใช้มันใน 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);
ฉันต้องการที่จะจับการกด 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
ฉันไม่รู้ว่าคำตอบที่ถูกต้องคืออะไรใน '13 แต่วันนี้มันเป็น:
myEditText.setKeyListener(DigitsKeyListener.getInstance(null, false, true)); // positive decimal numbers
คุณได้ทุกอย่างรวมถึงแป้นพิมพ์บนหน้าจอเป็นแป้นตัวเลข
เกือบทุกอย่าง เอสเพรสโซ่ในภูมิปัญญาที่ไม่มีที่สิ้นสุดของมันช่วยให้typeText("...")
หลีกเลี่ยงอย่างลึกลับกรองและป้อนขยะ ...
ง่ายที่สุดสำหรับฉัน
android:numeric="integer"
แม้ว่านี่ยังปรับแต่งเพิ่มเติม
android:digits="0123456789"