एंड्रॉइड में मल्टीलाइन टेक्स्ट व्यू?


154

में नीचे पसंद किया xml

<TableRow>
    <TextView android:id="@+id/address1"
        android:layout_width="fill_parent" 
        android:layout_height="wrap_content"
        android:gravity="left"
        android:maxLines="4" 
        android:singleLine="false"              
        android:text="Johar Mor, Gulistan-e-Johar, Karachi" >
    </TextView> 
</TableRow>

यह काम नहीं कर रहा है multiline, और मैं उपयोग कर रहा हूं TableLayout...

तो मैं यहाँ क्या गलती कर रहा हूँ?

जवाबों:


197

यदि आप जो पाठ डाल रहे हैं TextView, वह छोटा है, तो यह स्वचालित रूप से चार लाइनों तक विस्तारित नहीं होगा। यदि आप चाहते हैं TextViewकरने के लिए हमेशा चार लाइनें उस में पाठ की लंबाई, सेट की परवाह किए बिना है android:linesविशेषता:

<TextView
    android:id="@+id/address1"
    android:gravity="left"
    android:layout_height="fill_parent"
    android:layout_width="wrap_content"
    android:maxLines="4"
    android:lines="4"
    android:text="Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat."></TextView>

आप इसे TableRow के साथ कर सकते हैं, नीचे कोड देखें

<TableRow >
        <TextView
            android:id="@+id/tv_description_heading"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:gravity="left"
            android:padding="8dp"
            android:text="@string/rating_review"
            android:textColor="@color/black"
            android:textStyle="bold" />

        <TextView
            android:id="@+id/tv_description"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:gravity="left"
            android:maxLines="4"`enter code here`
            android:padding="8dp"
            android:text="The food test was very good."
            android:textColor="@color/black"
            android:textColorHint="@color/hint_text_color" />
    </TableRow>

21
ओपी ने "टेक्स्टव्यू को हमेशा चार पंक्तियों की परवाह किए बिना उसमें पाठ की लंबाई की परवाह नहीं की"।
टार

7
इस जवाब ने मेरे लिए काम किया। लेकिन मुझे सबसे अच्छे परिणाम मिले, अधिकतम रेखाओं और रेखाओं के साथ नहीं, बल्कि अधिकतम रेखाओं और खानों के साथ और लाइनों का उपयोग नहीं किया। मैंने 1 के लिए minlines सेट की है और सबसे बड़े डेटा से बड़ी है। इस तरह मुझे डेटा के एक कॉम्पैक्ट दृश्य के लिए 1 से एन लाइनें मिलती हैं।
आर अर्ले हैरिस

1
@REarleHarris: मैंने भी इसी उपाय को आजमाया है लेकिन समस्या यह है कि यह अधिकतम गणना नहीं ले रहा है। सभी डेटा मिनीलाइन काउंट में प्रदर्शित होते हैं। अब मैं क्या कोशिश कर सकता हूं मैं एक्सएमएल में कस्टम
टेक्स्टव्यू

119

मैंने सोचा था कि यदि आप उपयोग करते हैं तो मैं उसे जोड़ दूंगा

android:inputType="textMultiLine"

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

android:singleLine="false"काम ठीक हालांकि।


3
यह बिल्कुल सही नहीं है क्योंकि एंड्रॉइड की अपनी लिंट त्रुटियों का सुझाव है कि आप केवल इस विशेषता को EditText के साथ उपयोग करते हैं न कि TextView के साथ।
जारेड

1
क्या आप textMultiline का जिक्र कर रहे हैं? मैंने कहा कि इसका उपयोग करें। SingleLine TextViews पर ठीक है: developer.android.com/reference/android/widget/…
रयान

3
एंड्रॉइड: सिंगललाइन अब पदावनत हो गया है
हम्बर्टो

क्या आपको यकीन है? यह उल्लेख नहीं करता है कि डॉक्स में मैं उपरोक्त टिप्पणी में लिंक करता हूं, हालांकि मैंने अभी देखा कि इसे रेज डॉक्स में चिह्नित किया गया है। अजीब बात है कि वे TextView पेज पर इसका उल्लेख नहीं करते हैं। परेशानी यह है कि वे जो सुझाव देते हैं (बहुस्तरीय) वह दृश्य क्लिक करने योग्य हो जाता है, जैसा कि मैंने अपने ओपी में रखा था। डेवलपर
रयान

3
Android: singleLine = "false" को डिफ़ॉल्ट मान के रूप में
दर्शाया गया है

28

मुझे न तो जवाब पसंद हैं। बस इनपुट टाइप सेट करें और TextView अपनी सामग्री के लिए अनुकूल होगा

<TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:inputType="textMultiLine"/>

एक नेक्सस वन (2.3) और नेक्सस 4 (4.4) पर परीक्षण किया गया


52
Android: inputType = "textMultiLine" TextView के लिए नहीं है, इसके EditText के लिए और यदि आप ऐसा करने का प्रयास करते हैं तो आपको चेतावनी मिलती है
bhaskarc

2
आपको चेतावनियों को सुनना चाहिए। @ रियां समाधान का उपयोग करें।
m02ph3u5

15

बस अपने पाठ के अंदर '\ n' डालें ... कोई अतिरिक्त विशेषता की आवश्यकता नहीं है :)

          <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textAppearance="?android:attr/textAppearanceLarge"
            android:text="Pigeon\nControl\nServices"
            android:id="@+id/textView5"
            android:layout_gravity="center"
            android:paddingLeft="12dp"/> 

6
यह समाधान पाठ को गतिशील रूप से सेट करने के लिए उपयोग नहीं किया जा सकता है
सागर देवगंगा

@SagarDevanga टेक्स्ट को गतिशील रूप से सेट करने का क्या मतलब है?
juil

3
@ सागरदेवांगा, मैंने अभी-अभी जाँच की है, एक गतिशील और स्थैतिक पाठ डिफ़ॉल्ट रूप से (यदि उपयोग किया जाता है \n) से गुणा किया जाता है , इसलिए यह एक सही समाधान है। नहीं singleLine=false, नहीं lines=4और इतने पर।
कूलमाइंड

10

बस स्क्रॉलव्यू में टेक्स्टव्यू जोड़ें

<ScrollView
           android:layout_width="fill_parent"
           android:layout_height="wrap_content"
           android:layout_weight="1"
           android:layout_marginLeft="15dp"
           android:layout_marginRight="15dp"
           android:layout_marginTop="20dp"
           android:fillViewport="true">

           <TextView
               android:id="@+id/txtquestion"
               android:layout_width="fill_parent"
               android:layout_height="match_parent"
               android:background="@drawable/abs__dialog_full_holo_light"
               android:lines="20"
               android:scrollHorizontally="false"
               android:scrollbars="vertical"
               android:textSize="15sp" />

       </ScrollView>

5

मुझे वह समाधान पसंद नहीं है जो पाठ दृश्य में लाइनों की संख्या को मजबूर करता है। मैं आपको यहाँ प्रस्तावित समाधान के माध्यम से इसे हल करने का सुझाव देता हूं । जैसा कि मैं देख रहा हूं कि ओपी भी टेक्स्ट व्यू को तालिका में उचित बनाने के साथ संघर्ष कर रहा है और shrinkColumnsजो चाहता है उसे प्राप्त करने के लिए पास होने का सही निर्देश है।


5

एडिटटेक्स्ट के साथ काम करने की कोशिश करें इसे अस्पष्ट और असुविधाजनक बनाकर, आप स्क्रॉलबार प्रदर्शित कर सकते हैं और एडिट टेक्स्ट के अंडरबार को हटा सकते हैं।
यहाँ एक उदाहरण है:

<EditText
android:id="@+id/my_edit_text"
android:layout_width="match_parent"
android:layout_height="wrap_parent"
android:inputType="textMultiLine"                   <!-- multiline -->
android:clickable="false"                         <!-- unclickable -->
android:focusable="false"                         <!-- unfocusable -->
android:scrollbars="vertical"     <!-- enable scrolling vertically -->
android:background="@android:color/transparent"   <!-- hide the underbar of EditText -->
/>  

उम्मीद है की यह मदद करेगा :)


3

पहले "\n"इसके Htmlसमतुल्य के साथ बदलें "&lt;br&gt;" फिर Html.fromHtml()स्ट्रिंग पर कॉल करें । नीचे दिए गए चरणों का पालन करें:

String text= model.getMessageBody().toString().replace("\n", "&lt;br&gt;")
textView.setText(Html.fromHtml(Html.fromHtml(text).toString()))

यह पूरी तरह से काम करता है।


2

मैंने जो सीखा वह उन शब्दों के बीच में "\ n" जोड़ना था, जहाँ आप चाहते हैं कि वह अगली पंक्ति में आए। उदाहरण के लिए...

<TextView
    android:id="@+id/time"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:textAlignment="center"
    android:text="M-F 9am-5pm \n By Appointment Only" />

शाम 5 बजे के बीच \ n ने मुझे और नियंत्रण की अनुमति दी जहाँ मैं चाहता था कि मेरी अगली पंक्ति शुरू हो और समाप्त हो।


2

बहु-पाठ TextView के लिए मुझे मिला सबसे अच्छा उत्तर है:

android:inputType="textMultiLine"

8
नहीं के लिए android:inputTypeएक विशेषता <EditText>नहीं है <TextView>?
टाइम्टिम

यदि आप इस विशेषता को TextView में जोड़ते हैं तो एक चेतावनी दिखाई देती है। - संलग्न Android: inputType = "textMultiLine" का उपयोग <TextView> के साथ नहीं किया जाना चाहिए। वास्तव में यह विशेषता EditText के लिए है।
योंद्री २ '’१

2

आप android का उपयोग कर सकते हैं: inputType = "textMultiLine"

  <TextView android:id="@+id/address1"
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content"
    android:gravity="left"
    android:maxLines="4" 
    android:inputType="textMultiLine"
    android:text="Johar Mor, Gulistan-e-Johar, Karachi" />

1
यह एक चेतावनी के रूप में दिखाया गया है। TextView
चुपके रब्बी

1
inputType केवल EditText घटकों के लिए समर्थन है।
चमन विक्रमारथना

1

मैंनें इस्तेमाल किया:

TableLayout tablelayout = (TableLayout) view.findViewById(R.id.table);
tablelayout.setColumnShrinkable(1,true);

यह मेरे लिए काम किया। 1 कॉलम की संख्या है।


0
You can do this with TableRow, see below code

<TableRow >
    <TextView
        android:id="@+id/tv_description_heading"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:gravity="left"
        android:padding="8dp"
        android:text="@string/rating_review"
        android:textColor="@color/black"
        android:textStyle="bold" />

    <TextView
        android:id="@+id/tv_description"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:gravity="left"
        android:maxLines="4"`enter code here`
        android:padding="8dp"
        android:text="The food test was very good."
        android:textColor="@color/black"
        android:textColorHint="@color/hint_text_color" />
</TableRow>

0

सबसे सरल तरीका

<TableRow>
    <TextView android:id="@+id/address1"
        android:layout_width="fill_parent" 
        android:layout_height="wrap_content"
        android:gravity="left"
        android:maxLines="4" 
        android:singleLine="false"              
        android:text="Johar Mor,\n Gulistan-e-Johar,\n Karachi" >
    </TextView> 
</TableRow>

\nजहां आप एक नई पंक्ति सम्मिलित करना चाहते हैं उसका उपयोग करें उम्मीद है कि यह आपकी मदद करेगा


0

कुंजी एक ऐसा टेक्स्टव्यू है, जिसके साथ singleline=false(हाँ, पदावनत किया गया है, लेकिन काम करना होगा) या lines, के साथ संयुक्तmaxlinesminlines

<TextView
                android:id="@+id/txtBowlers"
                style="@style/Default_TextBox.Small"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_marginTop="4dp"
                android:singleLine="false"
                android:maxLines="6"
                android:text="Bob\nSally\nJohn"
                app:layout_constraintEnd_toEndOf="parent"
                app:layout_constraintHorizontal_bias="0.0"
                app:layout_constraintStart_toStartOf="@+id/txtTeamName"
                app:layout_constraintTop_toBottomOf="@+id/txtTeamName"/>

-1

आप लेआउट फ़ाइल में लंबी लाइनें लिखने के बजाय एक स्ट्रिंग की घोषणा क्यों नहीं करते हैं। इसके लिए आपको लेआउट फ़ाइल में कोड की एक पंक्ति घोषित करनी होगी 'android: text = "@ string / text" और \\ app \ src \ main \ res \ मान \ strings.xml पर जाएँ और कोड की एक पंक्ति जोड़ें 'यहाँ आपका बहुस्तरीय पाठ' किसी भी बिंदु से लाइन को तोड़ने के लिए '\ n' का भी उपयोग करता है और रेखा स्वचालित रूप से समायोजित हो जाएगी।


-4

मेरे लिए समाधान के गैर काम नहीं किया। मुझे पता है कि यह इस सवाल का पूरा जवाब नहीं है, लेकिन कभी-कभी यह मदद कर सकता है।

मैंने एक ऊर्ध्वाधर रैखिक रेखा में 4 पाठवृत्त रखे।

<Linearlayout
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:orientation:"vertical"

    ...>
    <TextView
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:text:"line1"
       .../>
    <TextView
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:text:"line2"
       .../>
    <TextView
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:text:"line3"
       .../>
    <TextView
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:text:"line4"
       .../>
</LinearLayout>

यह समाधान उन मामलों के लिए अच्छा है जो पाठ दृश्य पाठ स्थिर है, जैसे लेबल।


1
कृपया ऐसा न करें।
नम्र_वुल्फ

-23

जब यह सिंगल लाइन में फिट होने के लिए पर्याप्त जगह नहीं लेगा तो टेक्स्ट व्यू मल्टी लाइन होगी और सिंगलाइन सच में सेट नहीं होगी।

अगर इसे एक लाइन में जगह मिलती है तो यह मल्टी लाइन नहीं होगी।


7
क्या होगा यदि मैं तय चौड़ाई के बजाय fill_parent का उपयोग करना चाहता हूं? मेरी सामग्री काट दी जाती है, अगर मैं ऐसा करता हूं ...
happyhardik

6
मैं कोशिश करता हूँ android:singleLine="false"या android:inputType="textMultiLine".Notice कि (Marageus द्वारा बताया गया है) android:inputType="textMultiLine"को प्राथमिकता मिलती है जब दोनों मौजूद हैं
रोमांटिक इलेक्ट्रॉन

टिप्पणी करने वाले अन्य लोगों के विचारों को साझा करते हुए, यह पूरी तरह से गलत है और मैं इस बात के लिए दुखी हूं कि यह क्यों स्वीकार किया गया जवाब है।
एलेक्स जी
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.