मैं Android में TextView में एक नई पंक्ति कैसे जोड़ूं?


253

जब मैं एक परिभाषित TextViewमें xml, मैं कैसे यह करने के लिए एक नई लाइन जोड़ सकता हूँ? \nकाम नहीं करने लगता है।

<TextView
   android:id="@+id/txtTitlevalue"
   android:text="Line1: \n-Line2\n-Line3"
   android:layout_width="54dip"
   android:layout_height="fill_parent"
   android:textSize="11px" />

1
आपका कोड मेरे लिए काम करता है। आपको बहु-पाठ के बजाय क्या मिलता है?
मोलनार

2
दृश्य संपादक में यह शाब्दिक रूप से दिखाता है \ n
पेंटियम

जवाबों:


293

विज़ुअल एडिटर पर भरोसा न करें। आपका कोड इमू में काम करता है।


ठीक है, मेरे मामले में, दृश्य संपादक सच कह रहा था। यह बैकस्लैश प्रदर्शित करने के लिए एक और बैकस्लैश जोड़ रहा था। सही तरीका टेक्स्ट को xml फ़ाइल के अंदर डाल रहा था।
dp2050

79

प्रयत्न:

android:lines="2"

\n कार्य करना चाहिए।


1
मेरा टेक्स्टव्यू 2 लाइनों से अधिक लंबा हो सकता है। इसका एक नियंत्रण है। यह किसी भी चीज के बारे में हो सकता है।
ड्रॉपऑफजुपिटर


38

मुझे लगता है कि यह आपके HTM.fromHtml(subTitle)कॉल के साथ कुछ करना है : HTML के लिए एक "\ n" का मतलब नहीं है। <br/>"\ N" के बजाय प्रयास करें ।


25
@androidevAlex ऐसा इसलिए है क्योंकि यह <br/> है, न किbrbr>
इल्या कोगन

21

सबसे पहले, इसे अपने टेक्स्टव्यू में डालें:

android:maxLines="10"

फिर उपयोग करें \n अपने टेक्स्टव्यू के पाठ में करें।

maxLines TextView को इस सबसे कई लाइनों की ऊँचाई पर बनाता है। आप एक और नंबर चुन सकते हैं :)


19

उपरोक्त सभी की कोशिश की, क्या मेरे द्वारा किए गए कुछ शोधों के परिणामस्वरूप निम्नलिखित समाधान के लिए लाइन फीड एस्केप एस्केप चार्ट दिया गया है:

string = string.replace("\\\n", System.getProperty("line.separator"));
  1. का उपयोग करते हुए विधि की जगह की जरूरत है फिल्टर करने के लिए भाग निकले linefeeds (जैसे '\\\n')

  2. तभी लाइन फीड '\n'एस्केप चार्ट के प्रत्येक उदाहरण को वास्तविक लाइनफीड में प्रस्तुत किया जाता है

इस उदाहरण के लिए मैंने JSON तैयार डेटा के साथ एक Google Apps स्क्रिप्टिंग noSQL डेटाबेस (ScriptDb) का उपयोग किया।

चीयर्स: डी


1
इसने मेरे लिए काम किया: प्रतिस्थापित करें ("\\ n", System.getProperty ("line.separator"));
slott

बल्कि, string = string.replaceAll ("\\\ n", System.getProperty ("line.separator"));
user846316

10
<TextView
   android:id="@+id/txtTitlevalue"
   android:text="Line1: \r\n-Line2\r\n-Line3"
   android:layout_width="54dip"
   android:layout_height="fill_parent"
   android:textSize="11px" />

मुझे लगता है कि यह काम करेगा।


8

मेरा 2 सेंट, एंड्रॉइड टीवी का उपयोग कर रहा है।

\nपढ़ते समय XML स्ट्रिंग्स में जोड़ें :

public void setSubtitle(String subtitle) {
    this.subtitle = subtitle.replace("\\n", System.getProperty("line.separator"));
}

8

मैं सिर्फ एक ही समस्या को हल करता हूं, नीचे विशेषताओं को xml में डाल देता हूं

android:lines="2" android:maxLines="4" android:singleLine="false"

काम। Html.fromHtml("text1 <br> text2").toString()काम भी करते हैं।


यह अभी भी प्रासंगिक है, धन्यवाद! मेरे पास अधिकतम लाईनें थीं, लेकिन मेरे पास सिंगललाइन = झूठी नहीं थी।
ब्लास्ट_हार्डीज़

यह एकमात्र समाधान है जो मुझसे काम करता है। धन्यवाद!
सिलास

8

सुनिश्चित करें कि आपके बनाने \nमें है "\n"काम करने के लिए यह करने के लिए।


7

इससे मेरी समस्या हल हो गई।

stringVar.replaceAll("\\\\n", "\\\n");


5

ऐसा करने का एक तरीका Htmlटैग का उपयोग कर रहा है ::

txtTitlevalue.setText(Html.fromHtml("Line1"+"<br>"+"Line2" + " <br>"+"Line3"));

5

यदि आप डीबग करते हैं, तो आप देखेंगे कि स्ट्रिंग वास्तव में है "\ \r\ \n"या "\ \n", यानी, यह बच गया है। तो यदि आप अतिरिक्त से छुटकारा पाने के लिए उस स्ट्रिंग की मालिश करते हैं, \तो आपके पास अपना समाधान होगा। यह विशेष रूप से सच है यदि आप डेटाबेस से पढ़ रहे हैं।


5

आप लगाने की जरूरत "\n"में strings.xmlभीतर नहीं पेज लेआउट फ़ाइल।


इसने मेरे लिए काम किया, जहाँ विज़ुअल एडिटर अतिरिक्त बैकस्लैश जोड़ रहा था, बैकस्लैश को प्रदर्शित करने की कोशिश कर रहा था \ n में
dp2050

4

रखने की जरूरत है

1।android:maxLines="no of lines"

2. \nऔर अगली लाइनों के प्राप्त करने के लिए उपयोग करें


4

मेरे लिए समाधान लेआउट में निम्नलिखित पंक्ति जोड़ना था:

<LinearLayout
    xmlns:tools="http://schemas.android.com/tools"
    ...
    >

और \ n दृश्य संपादक में एक नई पंक्ति के रूप में दिखाई देता है। आशा करता हूँ की ये काम करेगा!


1
मुझे यकीन नहीं है कि यह सवाल से संबंधित है :)
सुलेमान

मुझे एक ही समस्या थी कि एक नई पंक्ति के बजाय स्ट्रिंग "\ n" बस खुद को दिखाती थी। जब मैंने इस लाइन के ऊपर लाइन को जोड़ा नहीं तो अब और नई लाइन दिखाई दी
रोब

1
हो सकता है कि ऐसा इसलिए हो क्योंकि आप ओपी का उपयोग कर रहे थे tools:textऔर android:textवैसे भी नहीं , लेकिन वैसे भी परेशान करने के लिए खेद है :)
सुलेमान

मुझे लगता है कि मुझे इसे बेहतर तरीके से स्पष्ट करना चाहिए था, आपकी टिप्पणी के लिए धन्यवाद, मैंने अब किया :) मैं उपयोग करता android:textहूं मुझे लगता है कि यह दृश्य संपादक का सिर्फ एक बग है, जैसे कि उत्तर दें उत्तर का सुझाव देता है लेकिन इसे देखने में सक्षम होने के लिए अधिक आरामदायक है :)
रोब

हाँ, मैं अब समझ गया हूँ, आप सही हैं कि यह अधिक आरामदायक है :) धन्यवाद
सुलेमान

4

इसके अलावा आप के &lt;br&gt;बजाय जोड़ सकते हैं \n.

और फिर आप टेक्स्ट को टेक्स व्यू में जोड़ सकते हैं:

articleTextView.setText(Html.fromHtml(textForTextView));

XML में आप नहीं कर सकते। यह एक संकलित त्रुटि देता है - android:textइसमें <या> वर्ण नहीं हो सकते।
टिम्मम

3

आपको \nफ़ाइल में डालने की आवश्यकता हैstring.xml

<string name="strtextparkcar">press Park my Car to store location \n</string>

2
 android:text="Previous Line &#10; Next Line" 

यह काम करेगा।


नहीं, यह नहीं है।
शजबॉट

<TextView एंड्रॉइड: लेआउट_ एक्सपोज़र = "match_parent" एंड्रॉइड: लेआउट_हाइट = "रैप_ कॉन्टेंट" एंड्रॉइड: सिंगललाइन = "गलत" एंड्रॉइड: टेक्स्ट = "प्रीव लाइन & # 10; न्यू लाइने" /> इसे काम करने के लिए एमुलेटर में चलाने की आवश्यकता है। धन्यवाद
वायरल परमार

2

कोशिश करो:

Textview_name.settext("something \n  new line "):

जावा फ़ाइल में।


3
कृपया प्रश्न का उचित उत्तर दें, अन्यथा टिप्पणी का उपयोग करें
DjSh

1

RuDrA05 का उत्तर अच्छा है, जब मैं XML को ग्रहण पर संपादित करता हूं तो यह काम नहीं करता है, लेकिन जब मैं XML को नोटपैड ++ से संपादित करता हूं तो यह काम नहीं करता है।

अगर मैं ग्रहण या नोटपैड ++ के साथ सहेजी गई एक txt फ़ाइल पढ़ता हूं तो वही बात हो रही है

शायद एन्कोडिंग से संबंधित है।


1

यह ठीक काम करता है। इसे अपने ऐप के लिए जांचें।

<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Text 1\nText 2\nText 3"/>

1

साइड नोट: पाठ का उपयोग कर पूंजीकरण करना

android:inputType="textCapCharacters"

या समान \nकाम करने से रोकता है ।


1

सुनिश्चित करें कि आप उपयोग कर रहे हैं your_package.R और नहींandroid.R



0

TextView में नई लाइन के लिए अपने काम के बीच में सिर्फ \ n जोड़ें यह काम करता है ।।


लेकिन उत्तर प्रश्न लिंक से संबंधित है "आपका" सवाल नहीं ...
निखिल बोराद

omg..sorry मेरे द्वारा भ्रमित किया गया। कृपया अपना उत्तर संपादित करें..मैं अपना वोट पॉजिटिव बदलता हूं।
रंजीथ कुमार

1
हे पहले अपना उत्तर संपादित करें। और मैं अपना मत बदल सकता हूं।
रंजीत कुमार

0

यदि TextView किसी भी लेआउट में है (उदाहरण के लिए LinearLayout), लेआउट के लिए अभिविन्यास विशेषता को ऊर्ध्वाधर में बदलने की कोशिश करें android:orientation="vertical"या इसके बाद एक नई लाइन बनाने के लिए TextViewविशेषता android:singleLine="true"को बदलें ।


0

प्रोग्रामेटिक रूप से: myTV.setText ("मेरा पाठ" + "\ n" + myString);


0

अपने stings.xml में एक स्ट्रिंग बनाएँ

<resources>
    ...
    <string name="new_line">\u000A</string>
</resources>

फिर आप कोड में स्ट्रिंग का संदर्भ लें

val linkString = "This is in the first line.${getString(R.string.new_line)}This is on the second line."
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.