android - मैं अपने EditText इनपुट को संख्यात्मक(संभवतः दशमलव और हस्ताक्षरित)इनपुट पर कैसे रोक सकता हूं?




android-edittext (9)

android:inputType TextView.setRawInputType() का उपयोग करने का प्रयास करें यह android:inputType से मेल खाती है android:inputType विशेषता।

मैंने Android पढ़ा है: EditText को संख्याओं तक सीमित करना और Android में एक EditText पर नंबर कीबोर्ड कैसे दिखाऊँ? । दुर्भाग्य से, उनमें से कोई भी मेरी जरूरतों को पूरा नहीं करता है।

मैं अपने EditText इनपुट को केवल नंबरों तक सीमित रखना चाहता हूं। हालाँकि, मैं भी हस्ताक्षरित और / या दशमलव इनपुट की अनुमति देना चाहता हूं।

यहां मेरा वर्तमान कोड है (मुझे यह प्रोग्राम करने की आवश्यकता है):

EditText edit = new EditText(this);

edit.setHorizontallyScrolling(true);
edit.setInputType(InputType.TYPE_CLASS_NUMBER);

इसके साथ, मेरा EditText merrily संख्यात्मक इनपुट के लिए सभी इनपुट को प्रतिबंधित करता है। दुर्भाग्य से, यह दशमलव बिंदु की तरह कुछ और अनुमति नहीं देता है।

अगर मैं उस लाइन को edit.setInputType(InputType.TYPE_NUMBER_FLAG_DECIMAL) बदल देता हूं, तो EditText सभी इनपुट को स्वीकार करता है (जो मुझे नहीं चाहिए ...)।

मैंने झंडे के संयोजन की कोशिश की है (यह देखने के लिए कि क्या यह काम करेगा हताशा में):

edit.setInputType(InputType.TYPE_CLASS_NUMBER);
edit.setInputType(InputType.TYPE_NUMBER_FLAG_DECIMAL)
edit.setInputType(InputType.TYPE_NUMBER_FLAG_SIGNED)

यह या तो काम नहीं किया (EditText ने हमेशा की तरह सभी इनपुट स्वीकार किए)।

फिर मेरे द्वारा इसे कैसे किया जाएगा?


EditText edit = new EditText(this);

edit.setHorizontallyScrolling(true);
edit.setInputType(EditorInfo.TYPE_NUMBER_FLAG_SIGNED|EditorInfo.TYPE_CLASS_NUMBER);

दशमलव के रूप में EditText के इनपुट प्रकार को सेट करने के लिए इस कोड का उपयोग करें:

EditText edit = new EditText(this);
edit.SetRawInputType(Android.Text.InputTypes.NumberFlagDecimal | Android.Text.InputTypes.ClassNumber);

इस लाइन को xml में डालें

 android:inputType="number|numberDecimal"

मेरा समाधान: `

   public void onTextChanged(CharSequence s, int start, int before, int count) {
   char ch=s.charAt(start + count - 1);
   if (Character.isLetter(ch)) {
       s=s.subSequence(start, count-1);
       edittext.setText(s);
    }

setRawInputType() का उपयोग करने का कोई कारण नहीं है, बस setInputType() उपयोग करें। हालाँकि, आपको OR ऑपरेटर के साथ वर्ग और झंडे को जोड़ना होगा:

edit.setInputType(InputType.TYPE_CLASS_NUMBER | InputType.TYPE_NUMBER_FLAG_DECIMAL | InputType.TYPE_NUMBER_FLAG_SIGNED);

हाय सब मुझे भी यह समस्या थी। मैं Xamarin के साथ C # का उपयोग करता हूं

बस थोड़ा सा ध्यान दें कि मैं किसी और से भी उम्मीद करता हूं।

मैंने यहां बताए गए कई तरीकों की कोशिश की है।

edittext1.SetRawInputType(Android.Text.InputTypes.ClassNumber | Android.Text.InputTypes.NumberFlagDecimal);

सबसे पास था लेकिन फिर भी काम नहीं किया। जैसा कि राल्फ ने उल्लेख किया है, आप उपयोग कर सकते हैं

edit.setInputType (InputType.TYPE_CLASS_NUMBER | InputType.TYPE_NUMBER_FLAG_DECIMAL | InputType.TYPE_NUMBER_FLAG_SIGNED)

हालाँकि मेरे C # में यह नहीं था। इसके बजाय आप इसे निम्नानुसार करें:

edittext1.InputType = Android.Text.InputTypes.ClassNumber | Android.Text.InputTypes.NumberFlagDecimal;

कृपया ध्यान दें कि इनमें से आदेश महत्वपूर्ण है। यदि आप पहले दशमलव लगाते हैं, तो यह आपको किसी भी वर्ण को टाइप करने की अनुमति देगा, जहां अगर न्यूमर पहले है तो यह केवल संख्यात्मक है, लेकिन एक दशमलव सेपरेटर की अनुमति देता है!


इसे इस्तेमाल करो। ठीक काम करता है

input.setInputType(InputType.TYPE_CLASS_NUMBER | InputType.TYPE_NUMBER_FLAG_DECIMAL | InputType.TYPE_NUMBER_FLAG_SIGNED);
input.setKeyListener(DigitsKeyListener.getInstance("0123456789"));

संपादित करें

कोटलिन संस्करण

fun EditText.onlyNumbers() {
    inputType = InputType.TYPE_CLASS_NUMBER or InputType.TYPE_NUMBER_FLAG_DECIMAL or
        InputType.TYPE_NUMBER_FLAG_SIGNED
    keyListener = DigitsKeyListener.getInstance("0123456789")
}

क्या यह सापेक्ष लेआउट होना चाहिए?
मैं निम्नलिखित का सुझाव fill_parent : fill_parent को fill_parent और इसके fill_parent को 1 पर सेट करें, ऐसा कुछ:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_height="wrap_content" android:orientation="horizontal"
android:layout_width="fill_parent">
<EditText android:text="@+id/EditText01" 
    android:id="@+id/EditText01"
    android:layout_height="wrap_content" 
    android:layout_weight="1"
    android:layout_width="fill_parent">
</EditText>
<Button android:text="@+id/Button01" 
    android:id="@+id/Button01"
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content">
</Button>

</LinearLayout>






android android-edittext