एंड्रॉइड में टेक्स्टव्यू में टेक्स्ट को कैसे लपेटें


86

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

मैंने निम्नलिखित को खोजा और आजमाया:

android:scrollHorizontally="false",
android:inputType="textMultiLine",
android:singleLine="false"

पर कोई काम नहीं ।।

क्या कोई सुझाव दे सकता है कि मैं यह कैसे कर सकता हूं।


7
टेक्स्ट व्यू डिफ़ॉल्ट रूप से वर्ड-रैप होना चाहिए। क्या आप अपना पूरा लेआउट पोस्ट कर सकते हैं?
danh32

किसी भी तरह से एक टेबल लेआउट के अंदर Textview है? यदि हां, तो मेरे पास आपके लिए एक उत्तर है।
जॉन एफएक्स 22'11

1
मेरे मामले में, लगभग आधा दर्जन विशेषताओं (नीचे वर्णित) को जोड़ने के बाद, पाठ को कई लाइनों पर पाठ लपेटने के लिए मजबूर करने के लिए, सफलता के बिना, मैंने देखा कि मेरे पास एक विशेषता थी android:inputType="textPersonName"। जाहिरा तौर पर इसे एंड्रॉइड स्टूडियो डिजाइन टूल द्वारा जोड़ा गया था। उस विशेषता को हटाने से समस्या ठीक हो गई! अन्य इनपुट प्रकार हो सकते हैं जो रैपिंग को भी रोकते हैं।
लार्स

जवाबों:


55

मेरे लिए यह समस्या केवल Android <4.0 पर हुई

मेरे द्वारा उपयोग किए जाने वाले मापदंडों का संयोजन था:

android:layout_weight="1"
android:ellipsize="none"
android:maxLines="100"
android:scrollHorizontally="false"

मैक्सलिंस की गिनती रैंडम फाइनल पीस की तरह लग रही थी, जिसने मेरा टेक्स्ट व्यू रैप बना दिया।


9
मुझे पता है कि यह एक पुराना धागा है, लेकिन मुझे लगा कि मैं अपने निष्कर्षों को पोस्ट करूंगा। मैंने केवल 'android: maxLines' का उपयोग किया और फिर इसने मेरे पाठ को लपेटा। Cheer @Guykun
स्टट्युलरिंग

फिर से, यह टेक्स्ट व्यू की ऊँचाई को बस सेट करने के लिए टेंटनमाउंट है match_parent, जो कि अतिरिक्त लाइनों को शामिल करने के लिए टेक्स्ट व्यू की ऊँचाई का विस्तार करने के समान नहीं है।
SMBiggs

50

बाधा लेआउट

<TextView
android:id="@+id/some_textview"
android:layout_width="0dp"
android:layout_height="wrap_content"

app:layout_constraintLeft_toLeftOf="@id/textview_above"
app:layout_constraintRight_toLeftOf="@id/button_to_right"/>
  • सुनिश्चित करें कि आपकी लेआउट चौड़ाई शून्य है
  • बाएं / दाएं अवरोधों को परिभाषित किया गया है
  • wra_content का लेआउट ऊंचाई विस्तार / नीचे की अनुमति देता है।
  • android:maxLines="2"ऊर्ध्वाधर विस्तार को रोकने के लिए सेट करें (2 केवल एक उदाहरण है)
  • एलिप्स संभव हैं। अधिकतम लाइनों के साथ एक अच्छा विचार हैandroid:ellipsize="end"

0dp चौड़ाई आपके विजेट को कितना चौड़ा है यह निर्धारित करने के लिए बाएँ / दाएँ अवरोध की अनुमति देता है।

बायां / दायाँ अवरोध स्थापित करना आपके विजेट की वास्तविक चौड़ाई निर्धारित करता है, जिसके भीतर आपका पाठ लपेटा जाएगा।

बाधा लेआउट डॉक्स


हाँ! यह वास्तव में यह कैसे काम करता है! बस यह सुनिश्चित करें कि आप 0dp
Yoraco Gonzales

बाएं और दाएं अवरोधों को सेट करने से मेरे लिए इसे लपेटने में मदद मिली, इसके बजाय पाठ को सही सीमा से अधिक बहने के कारण
जिया त्से

31

उस मामले के लिए जहां TextViewएक अंदर है TableLayout, समाधान android:shrinkColumns="1"पर सेट करना है TableLayout। ( 1उस टेक्स्ट नंबर को बदलें जिसे आप लपेटना चाहते हैं। (0-अनुक्रमित)

AFAICT, अन्य विशेषताओं की आवश्यकता नहीं है TextView

अन्य मामलों के लिए, अन्य उत्तर यहां देखें।

एफडब्ल्यूआईडब्ल्यू, मैंने शुरू में इसके साथ काम करने के लिए इसे प्राप्त किया था

 <TextView
   android:id="@+id/inventory_text"
   android:layout_width="fill_parent"
   android:layout_weight="1"
   android:width="0dp"

लेकिन इसके परिणामस्वरूप डायलॉग के निचले भाग में कुछ अतिरिक्त खाली जगह आ गई।


यह वही था जिसकी मुझे तलाश थी! अन्यथा मेरे शब्द काट दिए गए हैं
कार्सन होल्जाइमर

12

आपको 2 मापदंडों का उपयोग करना चाहिए:

  • android:ellipsize="none" : टेक्स्ट टेक्स्ट की चौड़ाई पर नहीं काटा जाता है

  • android:scrollHorizontally="false" पाठ आवश्यक के रूप में कई लाइनों पर लपेटता है


5
वह मेरे लिए काम नहीं कर रहा है। (एफडब्ल्यूआईडब्ल्यू, मेरे पास
टेबलरेवआउट

8

का प्रयोग करें app:breakStrategy="simple"में AppCompatTextView, यह पैरा लेआउट पर नियंत्रण रहेगा।

इसके तीन स्थिर मूल्य हैं

  • संतुलित
  • उच्च गुणवत्ता
  • सरल

अपने TextView xml में डिज़ाइन करना

<android.support.v7.widget.AppCompatTextView
        android:id="@+id/textquestion"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:scrollHorizontally="false"
        android:text="Your Question Display Hear....Your Question Display Hear....Your Question Display Hear....Your Question Display Hear...."
        android:textColor="@android:color/black"
        android:textSize="20sp"
        android:textStyle="bold"
        app:breakStrategy="simple" />

यदि आपका वर्तमान न्यूनतम एपीआई स्तर 23 या अधिक है तो कोडिंग में

yourtextview.setBreakStrategy(Layout.BREAK_STRATEGY_SIMPLE);

अधिक वापसी के लिए इस ब्रेकस्ट्रैटे का संदर्भ लें

टेक्स्टव्यू ब्रेकस्ट्रेगी इमेज


7

यह आपकी समस्या का समाधान करना चाहिए: android:layout_weight="1"


यह सिर्फ TextView को अधिक से अधिक स्थान लेने के लिए विस्तारित करने का कारण बनता है, जो कि ऊँचाई को सेट करने के समान है match_parent। बिल्कुल वैसा नहीं जैसा ओपी चाहता था।
SMBiggs

1
TableLayout के मामले में, layout_weight="1"मेरे लिए समस्या तय की। हालाँकि, मेरा TableRow जिसमें TextView शामिल है, layout_heightएक विशिष्ट मान पर सेट था । शायद किसी के लिए उपयोगी होगा
किट

5

ठीक है दोस्तों सच्चाई यह है कि बीच में कहीं न कहीं आपको माता-पिता के दृष्टिकोण और बच्चे के मुद्दे को देखना होगा। नीचे दिए गए समाधान केवल dialogतभी काम करते हैं जब स्पिनर मोड = Android संस्करण की परवाह किए बिना (कोई समस्या नहीं है .. इसे VD और DesireS में Android => 2.2 के साथ परीक्षण किया गया है):

  1. आपको स्पिनर (माता-पिता) मोड सेट करें जैसे:

    android:spinnerMode="dialog"  
    
  2. टेक्स्टव्यू (बाल कस्टम दृश्य) गुणों को इसके लिए सेट करें:

    android:layout_weight="1"  
    android:ellipsize="none"  
    android:maxLines="100"  
    android:scrollHorizontally="false"
    

मुझे उम्मीद है कि यह आपके लिए भी काम करेगा।


इसे 'ड्रॉपडाउन' मोड में काम करने के लिए बहुत सारी चीजों की कोशिश की लेकिन कुछ भी काम नहीं आया। अब 'डायलॉग' मोड पर चल बसे।
मंगेश

4

की स्थापना करके android:maxEmsएक साथ के साथ एक दिया मूल्य के लिए android:layout_weight="1"एक बार यह ईएमएस की दी गई लंबाई तक पहुँच जाता है TextView रैप करने के लिए कारण होगा।


RelativeLayout में भी TextView के लिए काम करता है।
ayz4sci

घंटे के लिए खोज रहा है, धन्यवाद यह constraintLayout पर भी बहुत अच्छा काम करता है
TarekB

3

inputTypeप्रॉपर्टी के तहत एंड्रॉइड स्टूडियो 2.2.3 में प्रॉपर्टी कहा जाता है textMultiLine। इस विकल्प का चयन करना मेरे लिए एक समान समस्या को हल करता है। मुझे आशा है कि वह मदद करेंगे।


2
यह EditText के लिए है, Textview के लिए नहीं
PsychedelicSubstance

2

बस RecyclerView के अंदर एक लेआउट के अंदर एक TextView पर काम कर रहा था। मेरे पास कट ऑफ, पूर्व, के लिए पाठ था Read this message, मैंने देखा:Read this :। मैंने android:maxLines="2"TextView पर सेटिंग करने की कोशिश की , लेकिन कुछ भी नहीं बदला। हालाँकि, पहली पंक्ति में और दूसरे पर android:lines="2"परिणाम हुआ ।Read thismessage


1

मुझे भी यही समस्या थी। निम्नलिखित बदलाव से यह काम हुआ -

android:layout_width="wrap_content"

दीर्घवृत्त, अधिकतम रेखाएँ, या लेआउट_वेट - सभी में कोई अंतर नहीं था। नोट - पैरेंट चौड़ाई को भी wra_content के रूप में सेट किया गया है।


1

आपको बस इतना करना है कि आपको अपनी टेक्स्टव्यू चौड़ाई सेट करनी है ।

एंड्रॉयड: layout_width = "60dp"

आप अपनी पसंद के लिए चौड़ाई बदल सकते हैं। यह जाँचने के लिए कि क्या यह इस तरह काम कर रहा है, बस लंबी वाक्य लिखें

Android: text = "मैं विश्वस्तरीय सॉफ्टवेयर इंजीनियर बनना चाहता हूँ"


1

@ गीकुन के दृष्टिकोण की कोशिश करें

android:layout_weight="1" android:ellipsize="none" android:maxLines="100" android:scrollHorizontally="false"

इसके अलावा, सुनिश्चित करें कि सामग्री लपेटने के लिए माता-पिता की चौड़ाई निर्धारित नहीं है। यह वह चीज है जो मुझे याद आ रही थी।


0

मैं एंड्रॉइड 2.2 का उपयोग कर रहा हूं और स्क्रीन से अधिक होने पर मेरा टेक्स्टव्यू स्वचालित रूप से अगली पंक्ति में मिलेगा।

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

android:layout_marginRight="52dp"

0

काफी अजीब है - मैंने कोड में अपना टेक्स्ट व्यू बनाया और इसे लपेटा - मेरे पास मानक सामान के अलावा कुछ भी सेट नहीं करने के बावजूद - लेकिन खुद के लिए देखें:

LinearLayout.LayoutParams childParams = new LinearLayout.LayoutParams(LayoutParams.FILL_PARENT,
            LayoutParams.WRAP_CONTENT);
childParams.setMargins(5, 5, 5, 5);

Label label = new Label(this);
label.setText("This is a testing label This is a testing label This is a testing label This is a testing labelThis is a testing label This is a testing label");
label.setLayoutParams(childParams);

जैसा कि आप params परिभाषा से देख सकते हैं कि मैं एक LinearLayout का उपयोग कर रहा हूं। क्लास लेबल केवल TextView का विस्तार करता है - फ़ॉन्ट आकार और फ़ॉन्ट रंग सेट करने के अलावा वहां कुछ भी नहीं कर रहा है।

एमुलेटर (एपीआई स्तर 9) में इसे चलाने पर यह स्वचालित रूप से पाठ को 3 लाइनों में लपेट देता है।


इस कोड के उपयोग पर ध्यान दें LinearLayout.LayoutParams childParams = new LinearLayout.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT);। सबसे अधिक संभावना है कि रैपिंग को आप "
ऑटोमैजिक

0

बस layout_withएक निश्चित आकार पर सेट करें, जब पाठ अधिकतम चौड़ाई को भरता है तो यह अगली पंक्ति में एक लपेट प्रभाव पैदा करने के लिए अतिप्रवाह होगा।

<TextView
    android:id="@+id/segmentText"
    android:layout_marginTop="10dp"
    android:layout_below="@+id/segmentHeader"
    android:text="You have the option to record in one go or segments(if you swap options 
    you will loose your current recordings)"
    android:layout_width="300dp"
    android:layout_height="wrap_content"/>

0

ट्रिक textView चौड़ाई के साथ है, इसे समर्पित संख्या बनाने की कोशिश करें जैसे:

<TextView
    android:layout_width="300dp"
    android:layout_height="wrap_content"/>

मैंने बिना किसी परिणाम के कई समाधानों की कोशिश की है, मैंने कोशिश की है:

    android:ellipsize="none"
    android:scrollHorizontally="false"

केवल एक चीज ने रैप ऑप्शन को ट्रिगर किया जो समर्पित चौड़ाई है


-1

आपको अपने TextView को स्क्रॉलव्यू में कुछ इस तरह से जोड़ना होगा:

<ScrollView android:id="@+id/SCROLL_VIEW"  
android:layout_height="150px"   
android:layout_width="fill_parent">  

<TextView   
   android:id="@+id/TEXT_VIEW"   
   android:layout_height="wrap_content"   
   android:layout_width="wrap_content"   
   android:text="This text view should act as header This text view should act as header This text view should act as header This text view should act as header This text view should act as header This text view should act as header This text view should act as header" />  
 </ScrollView>

4
आपके उत्तर के लिए धन्यवाद, लेकिन मेरा उद्देश्य पाठ को लपेटना है जब यह एक क्षैतिज स्कोरर नहीं डालने के लिए लाइन की लंबाई से अधिक हो।
समीर
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.