सवाल क्या एंड्रॉइड: आईपी एड्रेस दर्ज करने के लिए इनपुट टाइप टाइप करना चाहिए?


मैं एक छोटा एंड्रॉइड ऐप बना रहा हूं जहां उपयोगकर्ता एक आईपी एड्रेस या होस्टनाम को एडिटटेक्स्ट विजेट में दर्ज करेगा। 9 0% वे आईपी पते में प्रवेश करेंगे, शेष समय - एक होस्टनाम।

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

मुझे एक अच्छा इनपुट टाइप नहीं मिल रहा है। numberDecimal शुरुआत में एक अच्छा शॉट की तरह लग रहा था, लेकिन यह केवल एक बिंदु की अनुमति देता है।

आदर्श रूप से, मैं एक मानक कीबोर्ड से शुरू करना चाहता हूं जिसमें था ?123 बटन दबाया।

मैं वहां कैसे पोहोंचूं?


44
2017-12-28 22:15


मूल


मुझे लगता है कि केवल विकल्प संपादन टेक्स्ट टेक्स्ट है। आपको आईपी के लिए सत्यापन जोड़ने की आवश्यकता हो सकती है। - kosa
मत भूलना, आईपी पते का उपयोग शुरू करने जा रहे हैं a-f तथा : 1 99 5 में ... - BRPocock


जवाब:


उपयोग करने का प्रयास करें android:inputType="number", लेकिन सेट भी android:digits="0123456789."। मेरे लिये कार्य करता है।


48
2018-02-03 22:06



बस प्रश्न फिर से पढ़ें और ध्यान दिया कि आप एक होस्टनाम भी दर्ज करने में सक्षम होना चाहते थे। मेरा जवाब इसके लिए काम नहीं करेगा, लेकिन यह मानक "संख्या" कीबोर्ड लाएगा और एकाधिक बिंदुओं की अनुमति देगा। - Bodacious
आप कर सकते हैं निचले और ऊपरी केस अक्षर और एक हाइफ़न जोड़ें digits, लेकिन यह थोड़ा गन्दा है। यह मर्जी काम, यद्यपि। - Bodacious
यह एकदम सही समाधान है - Jacky
एंड्रॉइड 6.0 का उपयोग करना, number मुझे डॉट जबकि मुझे नहीं दिखाया numberDecimal किया। - Eido95


यदि तुम प्रयोग करते हो inputType="phone" आप संख्याओं और एक अवधि चरित्र वाले कट डाउन कीबोर्ड तक पहुंच प्राप्त करते हैं - यह आपके द्वारा दर्ज की जाने वाली अवधि के संबंध में इनपुट को प्रतिबंधित नहीं करता है।

कृपया देखें यह जवाब प्रवेश के दौरान सत्यापन के लिए।


37
2017-07-18 14:29



धन्यवाद मुझे लगता है कि यह एक अच्छा जवाब है। एक ऐसे क्षेत्र के लिए कीबोर्ड के साथ लाया जाना बहुत परेशान है जिसके लिए केवल आईपी पते जैसी संख्या की आवश्यकता होती है। प्रमाणीकरण स्पष्ट रूप से महत्वपूर्ण है लेकिन आपने इसके लिए एक लिंक भी प्रदान किया है! कुडोस। - Evan McEwen
एंड्रॉइड मार्शमलो 23 पर कीबोर्ड पर अवधि बटन को * और # द्वारा प्रतिस्थापित किया गया है। इसलिए आईपी एड्रेस इनपुट फ़ील्ड के लिए inputType = "phone" का उपयोग नहीं किया जाना चाहिए। एंड्रॉइड का प्रयोग करें: inputType = "numberDecimal" और एंड्रॉइड: अंक = "0123456789।" इसके बजाय अन्य प्रश्नों में सुझाव दिया गया है - Giorgio


यह एंड्रॉइड जोड़कर संख्याओं और दशमलव के साथ पूरी तरह से कीबोर्ड काम करता है: inputType = "संख्या | संख्याडिमल" और एंड्रॉइड: अंक = "0123456789।"

उदाहरण

 <EditText
    android:id="@+id/ip_address"
    android:inputType="number|numberDecimal"
    android:digits="0123456789."
    android:layout_width="match_parent"
    android:layout_height="wrap_content"/>

17
2017-10-10 02:06



सही समाधान - Parmendra Singh


आप इसके लिए अपने स्वयं के इनपुट फ़िल्टर का उपयोग कर सकते हैं

final EditText text = new EditText(ServerSettings.this);
InputFilter[] filters = new InputFilter[1];
filters[0] = new InputFilter() {
    @Override
    public CharSequence filter(CharSequence source, int start,
            int end, Spanned dest, int dstart, int dend) {
        if (end > start) {
            String destTxt = dest.toString();
            String resultingTxt = destTxt.substring(0, dstart) +
            source.subSequence(start, end) +
            destTxt.substring(dend);
            if (!resultingTxt.matches ("^\\d{1,3}(\\." +
                    "(\\d{1,3}(\\.(\\d{1,3}(\\.(\\d{1,3})?)?)?)?)?)?")) { 
                return "";
            } else {
                String[] splits = resultingTxt.split("\\.");
                for (int i=0; i<splits.length; i++) {
                    if (Integer.valueOf(splits[i]) > 255) {
                        return "";
                    }
                }
            }
        }
    return null;
    }
};
text.setFilters(filters);

13
2018-04-05 10:00



इसके लिए धन्यवाद। यह जवाब बिल्कुल वही था जो मुझे चाहिए था। - bastecklein


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

<EditText
    android:id="@+id/txtIP"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:digits="0123456789."
 />

5
2017-11-03 21:24



संपादन पाठ में एकाधिक दशमलव कैसे दर्ज कर सकते हैं ?? - Surya Prakash Kushawah
@ सूर्यप्रकाश कुशावा अंक = "0123456789।" यह कर सकता है... - Richi
ओह हाँ एफबी का दोस्त हो सकता है - Surya Prakash Kushawah


मुझे लगता है कि आपका एकमात्र विकल्प है ..

EditText android:inputType="text" ... />

आप एक आईपी पते में 3 बिंदुओं के लिए पाठ की जांच कर सकते हैं


1
2017-12-28 22:18



उपयोगकर्ता चाहता है कि एक ही टेक्स्ट बॉक्स को होस्ट नाम और आईपी को संभालने की आवश्यकता हो, संख्या केवल इसे संख्या में ही क्रियन कर सकती है। यहां तक ​​कि आईपी वह डीओटीएस के कारण प्रवेश नहीं कर सकता है। - kosa
"संख्या" आपको अक्षरों पर स्विच करने नहीं देगी और आपको एक बिंदु दर्ज नहीं करने देगी। - AngryHacker
मुझे लगता है कि आपका एकमात्र विकल्प टेक्स्ट है। फिर आप यह सुनिश्चित करने के लिए स्थिरता के लिए आईपी पता देख सकते हैं कि decimals जगह में हैं। - coder_For_Life22


मुझे लगता है कि आपको उपयोग करने की ज़रूरत है TextWatcher सत्यापन के लिए, इसे पंजीकृत करें TextView.addTextChangedListener () विधि और उपयोग करें Pattern.DOMAIN_NAME तथा Pattern.IP_ADDRESS (एंड्रॉइड 2.2+)।

देख:
एंड्रॉइड: मैं EditText इनपुट को कैसे सत्यापित कर सकता हूं?
एंड्रॉइड में आईपी मान्य


1
2017-12-28 22:26



यह सत्यापन है - मुझे वह हिस्सा मिला। मैं केवल उपयोगकर्ता पर इसे आसान बनाने और उपयोगकर्ता को अतिरिक्त कुंजी टैप करने के साथ ही चिंतित हूं। - AngryHacker


आप DigitsKeyListener का विस्तार कर सकते हैं (स्रोत) और फ़िल्टर () फ़ंक्शन को बदलें (सत्यापन जो आईपी पैटर्न या स्ट्रिंग होस्टनाम की जांच करेगा) और getInputType () को return InputType.TYPE_CLASS_PHONE;


1
2017-12-28 22:46





<EditText
    android:id="@+id/ip_address"
    android:inputType="number|numberDecimal"
    android:digits="0123456789."
    android:layout_width="match_parent"
    android:layout_height="wrap_content"/>

मेरे लिए काम किया


1
2017-08-09 12:03



का उपयोग करते हुए number|numberDecimal केवल एक बिंदु की अनुमति देता है। - tmm1
जोड़ना android:digits="0123456789." बहुत - saurabh yadav
मेरी गलती। इनपुट टाइप प्रकार + अंकों का उपयोग एंड्रॉइड पर ठीक काम करता है, लेकिन फ़ायरोस (अमेज़ॅन एंड्रॉइड फोर्क) पर नहीं, जिसमें एक कस्टम संवाद कार्यान्वयन है। - tmm1


हो सकता है कि यदि आप 2 रेडियोबटन का उपयोग करते हैं, तो कोई मेजबान के लिए एक एडिटेक्स्ट दिखाता है, दूसरा आईपी के लिए 4 न्यूमेरिक एडिटेक्स्ट दिखाता है, फिर, जब उपयोगकर्ता डेटा जमा करता है तो आप उनके बीच डॉट्स के साथ सभी 4 एडिटेक्स्ट वैल्यू को जोड़ते हैं, इस तरह कुछ, edittext1.getText ( ) + "।" + edittext2.getText () + "।" edittext3.getText () + "।" edittext4.getText () ताकि आप इस तरह एक मान्य आईपी पता प्राप्त कर सकें लेकिन जाहिर है कि यह अधिक काम करेगा।


0
2018-01-16 15:10



क्या यह मंगल ग्रह में किया जाता है? - Sayka
अच्छा गॉली मुझे नफरत है जब ऐप्स आईपी पते "आसान" दर्ज करने का प्रयास करते हैं। मान लीजिए, अगर मुझे पता है कि आईपी पता क्या है, तो शायद मुझे "।" मिल सकता है। बटन। - gladed
@gladed ठीक है, विचार आईपी सत्यापन की सुविधा और उपयोगकर्ता इनपुट को आसान बनाने के लिए था - crit_
आप Patterns.IP_ADDRESS के विरुद्ध एक स्ट्रिंग को आसानी से मान्य कर सकते हैं। उपयोगकर्ता के लिए, आईपी पते में विभिन्न फ़ील्ड के बीच आगे और पीछे टैप करना कभी आसान नहीं होता है। क्या आपने कभी अलग-अलग क्षेत्र-कोड / 3-अंकों-उपसर्ग / 4-अंकों-प्रत्यय फ़ील्ड के साथ एक फोन डायलर देखा है? या नाम / डोमेन के लिए विभिन्न क्षेत्रों के साथ एक ईमेल विजेट? कृपया बस मत करो। - gladed


उपयोग करने का प्रयास करें android:inputType="textUri"। जब आप होस्टनाम या आईपी पता चाहते हैं तो यह विशेष रूप से अच्छी तरह से काम करता है।


0
2018-03-24 20:06