EditText अंक को प्रोग्रामेटिक रूप से सेट करें


86

मैं अनिवार्य रूप से एक EditText प्रोग्राम के अंकों के मूल्य को निर्धारित करने की कोशिश कर रहा हूं। अब तक मेरे पास:

weightInput.setInputType(InputType.TYPE_CLASS_PHONE);
weightInput.setKeyListener(DigitsKeyListener.getInstance());

जो ठीक है, लेकिन मैं एक दशमलव स्थान (।) को शामिल करने में सक्षम होना चाहता हूं। कोई विचार?


1
आप शायद DialerKeyListenerइसके बजाय का उपयोग करना पसंद करेंगेDigitsKeyListener
दिमित्री ग्रायाज़िन

जवाबों:


206

इसे इस्तेमाल करे:

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

कोड से:

weightInput.setKeyListener(DigitsKeyListener.getInstance("0123456789."));

लेकिन, यह उपयोगकर्ता को कई शामिल करने की अनुमति देता है "।" वास्तविक संख्याओं के लिए जॉयरा का उत्तर देखें ।


यह ठीक है, लेकिन मैं इसे प्रोग्रामिक रूप से करना चाहता हूं। इसका कारण यह है क्योंकि मैं कई स्थितियों में एक लेआउट का पुन: उपयोग करना चाहता हूं क्योंकि यह अंक एकमात्र चर है जो लगातार बदलता रहता है। कोड में इसे करना मेरी स्थिति में बहुत अधिक प्रभावी है।
रयानडेल

2
धन्यवाद। मैं वास्तव में महसूस करता हूं कि यह उत्तर चेकमार्क के योग्य है क्योंकि यह मेरे द्वारा पूछे जाने के लिए विशिष्ट है, लेकिन दोनों समाधान काम करते हैं।
रयानडेल

@ संदर्भ, यह अजीब है, क्योंकि TextViewस्रोतों को देख रहे हैं: // If no input type was specified, we will default to generic text, since we can't tell the IME about the set of digits that was selected.
दिमित्री Gryazin

.9 के बाद का उपयोग क्या है ?
मितेश शाह

1
@MiteshShah यह दशमलव स्थान के लिए अनुमति देता है।
मास्टरवॉक

30

इसे इस्तेमाल करे:

weightInput.setInputType(InputType.TYPE_CLASS_NUMBER);          
weightInput.setInputType(InputType.TYPE_NUMBER_FLAG_DECIMAL);           
weightInput.setKeyListener(DigitsKeyListener.getInstance(false,true));

public static DigitsKeyListener getInstance (boolean sign, boolean decimal) 

यदि कोई निर्दिष्ट करता है, तो अंक 0 को 9 के माध्यम से 0 अंक स्वीकार करता है, साथ ही अंक (केवल शुरुआत में) और / या दशमलव बिंदु (केवल एक क्षेत्र)।

यह कई के बारे में समस्या को हल करता है। ' EditText में


1
बस एक स्पष्टीकरण जोड़ें: editText.setKeyListener (DigitsKeyListener.getInstance (सत्य, सत्य)); दशमलव और नकारात्मक संख्या को सक्षम करने के लिए। editText.setKeyListener (DigitsKeyListener.getInstance (गलत, सच)); केवल सकारात्मक दशमलव संख्या को सक्षम करने के लिए। editText.setKeyListener (DigitsKeyListener.getInstance (झूठे, झूठे)); केवल सकारात्मक पूर्णांक सक्षम करने के लिए।
12

8
प्रश्न: यदि आप setInputTypeएक बार फिर से, यह एक दूसरे से पहले एक को ओवरराइड नहीं करेगा? मुझे लगता है कि आपको उपयोग करना चाहिए, weightInput.setInputType(InputType.TYPE_CLASS_NUMBER | InputType.TYPE_NUMBER_FLAG_DECIMAL);लेकिन मुझे 100% यकीन नहीं है
राफेल रुइज मुनोज़

20

का उपयोग करें InputType.TYPE_NUMBER_FLAG_DECIMAL

यह भी देखें: इनपुट प्रकार


-1? मैंने निश्चित रूप से ऐसा नहीं किया। आपके समाधान ने काम किया, धन्यवाद।
रयानडेल

ऐसा लगता है कि इसे वापस कर दिया गया है। मदद करने में खुशी।
रिक्की

4

IP पता इनपुट के लिए (एकाधिक डॉट्स और संख्याएं)

प्रयत्न

<EditText
    android:id="@+id/ipBox"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:hint="@string/ipAddrHint"
    android:inputType="numberDecimal|number"
    android:digits="0123456789."
    android:textSize="30sp" />

1
कृपया ध्यान दें कि हेक्साडेसिमल आईपी पते (0x से शुरू होने वाले भागों के साथ) भी मान्य हैं, और आईपी पते के बजाय डोमेन नाम का उपयोग किया जा सकता है।
त्रिकोणीय 3
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.