android - एंड्रॉइड में xml विशेषता एकललाइन पदावनत है या नहीं?




android-edittext attributes (7)

singleLine का उपयोग singleLine लिए xml लेआउट फ़ाइलों में किया गया है:

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:singleLine="true" />

SO पर कुछ लोगों का कहना है कि singleLine को हटा दिया गया है, जबकि अन्य लोग अभी भी इसका उपयोग करने का सुझाव देते हैं। कभी-कभी यह तब भी उपयोग करना आवश्यक लगता है जब maxLines="1" काम नहीं करता है। ( here देखें, here , और here )

डॉक्स को इस प्रश्न का उत्तर देने के लिए जाना चाहिए, है ना? यहाँ, वे कहते हैं:

यह स्थिरांक एपीआई स्तर 3 में पदावनत किया गया था।

यह विशेषता पदावनत है। स्थैतिक पाठ के लेआउट को बदलने के लिए textMultiLine उपयोग करें, और संपादन योग्य पाठ दृश्यों के लिए इनपुटटाइप विशेषता में textMultiLine ध्वज का उपयोग करें (यदि सिंगललाइन और इनपुट टाइप दोनों की आपूर्ति की जाती है, तो इनपुट टाइप फ्लैग सिंगललाइन के मान को ओवरराइड कर देगा)।

हालाँकि, TextView डॉक्स में , कोई संकेत नहीं है कि यह android:singleLine गया है, या तो android:singleLine या setSingleLine या setTransformationMethod । एक ही TextView डॉक्स, तुलना करके, यह STATUS_BAR_HIDDEN कि STATUS_BAR_HIDDEN और fitSystemWindows जैसी अन्य चीजें पदावनत हैं। तो singleLine डेप्रिसिएशन एक चूक है, क्या यह "अनिर्धारित" था, या क्या?

यह प्रश्न पहले पूछा जा चुका है, लेकिन प्रश्न का मुख्य ध्यान नहीं था (और उत्तर नहीं दिया गया था)।


TextView के आधिकारिक grepcode में (v5.1.0 r1):

android:singleLine को @Deprecated साथ एनोटेट नहीं किया @Deprecated

मैं इसे setInputType विधि में भी देखता हूं:

boolean singleLine = !isMultilineInputType(type);

// We need to update the single line mode if it has changed or we
// were previously in password mode.
if (mSingleLine != singleLine || forceUpdate) {
    // Change single line mode, but only change the transformation if
    // we are not in password mode.
    applySingleLine(singleLine, !isPassword, true);
}

setInputType mSingleLine मान को ओवरराइड करता है।

संपादित करें: इस xml विशेषता को अब आधिकारिक तौर पर हटा दिया गया है। ( एपीआई 3 के बाद से? ) यह अब AndroidStudio xml एडिटर में दिखाई दे रहा है।


केवल android:maxLines="1" प्रदान कर रहा है android:minLines="1" android:maxLines="1" और android:minLines="1" कीबोर्ड actionNext के मुद्दे को हल नहीं करता है। android:inputType="text" उपयोग करें android:inputType="text" उसी के लिए android:inputType="text"


जबकि एंड्रॉइड स्टूडियो का दावा है कि यह पदावनत है, वास्तव में हमारे पास एक संपादित पाठ था जो केवल एकल-पंक्ति होने की अनुमति देना चाहिए।

maxLines="1" जोड़ना maxLines="1" ने इसे नईलाइन वर्णों की अनुमति दी, जो हमारी आवश्यकताओं के लिए उपयुक्त नहीं है।

इसलिए हम singleLine="true" का उपयोग करके वापस चले गए।


परिवर्तनित विशेषता को d24b8183b9 में जोड़ा गया था जो कि Google के आंतरिक SCM से एक डंप के अलावा कुछ भी नहीं है:

ऑटो आयात //branches/cupcake/[email protected] से

जैसा कि परिवर्तन core/res/res/values/attrs.xml से देखा जा सकता है, @deprecated doc टिप्पणी जोड़ता है, लेकिन core/java/android/widget/TextView.java setSingleLine() से setSingleLine() के डॉक्टर से कुछ भी नहीं बदलता है टिप्पणी।

अब Google के आंतरिक SCM इतिहास तक पहुँच के बिना, यह जानना संभव नहीं है कि वास्तव में attrs.xml doc टिप्पणी में उपरोक्त परिवर्तन का क्या कारण है, लेकिन आपके प्रश्न के लिए

तो singleLine डेप्रिसिएशन एक चूक है, क्या यह "अनिर्धारित" था, या क्या?

एक संभावित उत्तर यह है: TextView की सिंगल-लाइन न तो अपग्रेड की गई थी, न ही "अनिर्धारित", लेकिन यह ध्यान में रखने के लिए बढ़ाया गया था कि क्या दृश्य संपादन योग्य है, पासवर्ड फ़ील्ड या किसी अन्य इनपुट प्रकार के ध्वज का उपयोग करता है जो एकल / मल्टी को प्रभावित करता है lineness।


मुझे लगता है कि आपके प्रश्न का उत्तर आपके द्वारा लिंक किए गए SO पदों में से एक में पहले से है । दुर्भाग्य से, singleLines का singleLines एक काला या सफेद मामला नहीं है।

यह पदावनत है, लेकिन यह जल्द ही कहीं भी नहीं जा रहा है।

इसका उत्तराधिकारी होने के कारण इसका प्रदर्शन ख़राब था। यह SingleLineTransformationMethod विपरीत, SingleLineTransformationMethod में आपके द्वारा जगह किए गए स्ट्रिंग और नए रिटर्न को बदलने के लिए SingleLineTransformationMethod का उपयोग करता है, जो लाइनों की संख्या के आधार पर TextView की ऊंचाई को "सिर्फ" समायोजित करता है और कोई स्ट्रिंग रिप्लेसमेंट नहीं करता है।

पात्रों को बदलने के इस तरीके का मतलब यह भी था कि singleLine अप्रत्याशित तरीके से टूट सकता है (जैसे कि आप कस्टम फोंट का उपयोग करते हैं)। यह इन प्रदर्शनों और विश्वसनीयता के मुद्दे थे, जिनके कारण इसकी वंचना हुई।

हालाँकि, यह कहीं भी नहीं जा रहा है , क्योंकि आप जिन एसओ पोस्ट से राज्यों से जुड़े हैं, यह अभी भी कई पुराने एंड्रॉइड अनुप्रयोगों द्वारा उपयोग में है, और यह अभी भी कभी-कभी उपयोगी है (जैसे जब आप पूरे पाठ को एक पंक्ति में दिखाना चाहते हैं और अनदेखा करें कैरिज-रिटर्न और न्यूलाइन्स)।

ध्यान दें कि पदावनति का मतलब यह नहीं है कि एक एपीआई दूर जा रहा है। इसका मतलब सिर्फ इतना है कि इसका उपयोग हतोत्साहित किया जाता है, लेकिन इसकी अनुमति दी जा सकती है।


मैंने अभी android:inputType="text" जोड़ा है android:inputType="text" और हटाए गए android:maxLines="1" , इसने मेरे लिए ठीक काम किया।


singleLine पदावनत कर दिया गया। किसी चर्चा की जरूरत नहीं।

एकमात्र समस्या गलत प्रलेखन है।
"संपादन योग्य पाठ विचारों के लिए inputType विशेषता में textMultiLine ध्वज का उपयोग करें" आप जो singleLine का उपयोग करके प्राप्त करना चाहते हैं उसका प्रत्यक्ष विपरीत है।

इसके बजाय आप android:inputType="text" उपयोग कर सकते हैं।
मेरे लिए यह बिल्कुल वही था जो मैं चाहता था - बिना लाइन ब्रेक के एक लाइन के साथ एक एडिट।






android-singleline