String Resource new line /n not possible? - android

It doesn't seem like it's possible to add a new line /n to an XML resource string. Is there another way of doing this?

use a blackslash not a forwardslash. \n
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="title">Hello\nWorld!</string>
</resources>
Also, if you plan on using the string as HTML, you can use <br /> for a line break(<br />)
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="title">Hello<br />World!</string>
</resources>

I know this is pretty old question but it topped the list when I searched. So I wanted to update with another method.
In the strings.xml file you can do the \n or you can simply press enter:
<string name="Your string name" > This is your string.
This is the second line of your string.\n\n Third line of your string.</string>
This will result in the following on your TextView:
This is your string.
This is the second line of your string.
Third line of your string.
This is because there were two returns between the beginning declaration of the string and the new line. I also added the \n to it for clarity, as either can be used. I like to use the carriage returns in the xml to be able to see a list or whatever multiline string I have. My two cents.

After I tried next solution
add \n
add \n without spaces after it
use "" and press Enter inside text
text with press Enter
use lines=2
What solves me is br tag
<string name="successfullyfeatured">successfully<br/> You are now a member</string>
Update
the most reliable solution is to use Translation editor and edit text and it will handle new lines for you

This is an old question, but I found that when you create a string like this:
<string name="newline_test">My
New line test</string>
The output in your app will be like this (no newline)
My New line test
When you put the string in quotation marks
<string name="newline_test">"My
New line test"</string>
the newline will appear:
My
New line test

When using the translations editor in Android Studio just click the icon to the right (or use Shift-Enter on Windows, Alt/Option-Enter on MacOS) and then add line breaks using return.
This will insert \n correctly in the localized strings.xml.

In the latest version of Android studio, "\n" is going to be printed like it was meant to be there unless the whole string it's in apostrophes
For Example:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="title">"Hello\nWorld!"</string>
</resources>

I have tried two options, both are efficient and easy.
I used <br/> HTML tag
<string name="name_detail">
Hey user. <br/>
Enjoy a new shopping deal.!!
</string>
Add an encoding line at the top of strings.xml
<?xml version="1.0" encoding="utf-8"?>
and use "\n" to break line
Example
<string name="name_detail">
Hey user.\n
Enjoy a new shopping deal.!!
</string>

If you put "\n" in a string in the xml file, it's taken as "\\n"
So , I did :
text = text.Replace("\\\n", "\n"); ( text is taken from resX file)
And then I get a line jump on the screen

don't put space after \n, otherwise, it won't work. I don't know the reason, but this trick worked for me pretty well.

You can use this format
<string name="test">
"This is
a new line"
</string>

I just faced this issue.
didn't work on TextView with constraint parameters. Adding android:lines="2" seems to fix this.

I have tried
1-Top word \n Bottom word
2-Top word ENTER Bottom word
Didn't work
And finally <br/> worked for me in android studio
In fact the correct way to use it is \n although it is possible to see it done after Build the application. The only has an effect on the design and not on the application
<string name="available_balance">Available\nBalance</string> //Look good on the app and Available\nBalance in android studio
<string name="available_balance">Available<br/>Balance</string> //Look good in android studio and Available Balance on the App

finally, I found the solution.
the <br/> is working on design only and it's not working in running app. the \n is working on running app only and not working on design
so the solution is to use both if you want to have both results.
something like this
\n<br/>
Example:
Hello \n<br/>World.
Result in design mode:
Hello\n
World.
Result in running app:
Hello
World.

Very simple you have to just put
\n
where ever you want to break line in your string resource.
For example
String s = my string resource have \n line break here;

I want to expand on this answer.
What they meant is this icon:
It opens a "real editor window" instead of the limited-feature text box in the big overview. In that editor window, special chars, linebreaks etc. are allowed and converted to the correct xml "code" when saved

Just use "\n" in your strings.xml file as below
<string name="relaxing_sounds">RELAXING\nSOUNDS</string>
Even if it doesn't looks 2 lines on layout actually it is 2 lines. Firstly you can check it on Translation Editor
Click the down button and you will see this image
Moreover if you run the app you will see that it is written in two lines.

\n tag worked in the strings.xml file
Eg:
<string name="hello">Hello World &\nWelcome</string>
Output:
Hello World &
Welcome
Note:
Make sure that you dont add space before and after of \n"
Even if it doesnt looks on new line in the preview window of UI when you run the app it will be displayed in the next line.

To see in the design tab the line breaks and in the device i use:
<br/><br/>\n\n
(to 2 break lines)

Although the actual problem was with the forward slash still for those using backslash but still saw \n in their layout.
Well i was also puzzled at first by why \n is not working in the layout but it seems that when you actually see that layout in an actual device it creates a line break so no need to worry what it shows on layout display screen your line breaks would be working perfectly fine on devices.

Late answer but i think might help someone.
You will some times see \n in the textview in android studio's layout preview. (But it lies then). Please refresh layout.
Or deploy your app to a real Android Device to see the \n actually working in android string resource.

Have you tried turning it off and on again ?!
This is a very old question but no other answer seem to suggest this.
It could be that the layout preview on android studio is not properly displaying the textView.
So you could try exiting android studio and launching it again.
I guess this can happen if android studio was open while the computer was in sleep/hibernate etc.
Anyway, worth a shot.

Related

How to change line of large string used as button name. I used to change line but it's not working. I given Image link. Any solution?

string.xml file screenshot of android studio
Design of app screenshot
I used \n and it worked without any problem
<string name="example_new_line">First line\nSecond line</string>
hope it helps

How to make XML strings bold, underlined etc?

http://docs.fusioncharts.com/charts/contents/Styles/Font.html
I tried this, along with a lot of things but failed to do so.
Here's what I want.
<string name="ss">Bold. Underlined. Italic. Big. Small</string>
I want to format a little bit of the string.
Where it's written bold, I want it to be bold...and same for others.
I tried a lot of tags ...but well nothing worked, and I couldn't find anything on Google or SO.
I know how to do it in a textview, but that's not what I want...
I'm sending some text resource to an activity that shows it...
If I did it with different text views, I'd have to create several of them, a new one for whenever I want bold text, and that's not very elegant.
Is there a way to simple do this in the XML file ? or some other way ?
Try wrapping your marked up text in CDATA tags. For example:
<string name="ss"><![CDATA[<b>Bold.</b> <u>Underlined.</u> <i>Italic.</i> <big>Big.</big> <small>Small</small>]]></string>
And then use Html.fromHtml wherever you're wanting to display it:
Html.fromHtml(getString(R.string.ss))
This problem has been driving me crazy for ages. It's something sooo simple that you just want it to work!!!
Anyway I've found an answer here at http://www.coderzheaven.com/2011/06/19/styling-text-in-android-through-xml/
The key is to load the resource as a CharSequence using getResources().getText(R.string.xxxx) this will retain all the style information and allow you to use inline styling tags.
My mistake was using getString() because when loading your resource getString() will cause the string to lose all its style information.
exemple:
<string name="ss"><font size="15"><b>Parrainage</b></font><u>subscribe</u></string>
b = bold et u = underline .....etc
This is working for me.
<string name="welcome_messages">Hello, %1$s! You have <b>%2$d new messages</b>.</string>
txt.setText(Html.fromHtml(getString(R.string.welcome_messages)));
more details check Official site:
https://developer.android.com/guide/topics/resources/string-resource.html#StylingWithSpannables
in dimens file write:
<dimen name="size_edittext">180dp</dimen>
and in your xml layout or activity call it:
android:#dimen/ size_edittext

How to make a new line or tab in <string> XML (eclipse/android)?

So, in my strings.xml I have a very long text which I want to format somehow.
How can I put a tab before the first sentence of the text? Also, what is the code for new line? Thanks
Add \t for tab and \n for new line.
Use \n for a line break and \t if you want to insert a tab.
You can also use some XML tags for basic formatting: <b> for bold text, <i> for italics, and <u> for underlined text
More info:
https://developer.android.com/guide/topics/resources/string-resource.html
\n didn't work for me. So I used <br/> HTML tag
<string name="message_register_success">
Sign up is complete. <br/>
Enjoy a new shopping life at fatherofapps.com!!
</string>
Use \t to add tab and \n for new line, here is a simple example below.
<string name="list_with_tab_tag">\tbanana\torange\tblueberry\tmango</string>
<string name="sentence_with_new_line_tag">This is the first sentence\nThis is the second scentence\nThis is the third sentence</string>
add this line at the top of string.xml
<?xml version="1.0" encoding="utf-8"?>
and use
'\n'
from where you want to break your line.
ex. <string> Hello world. \n its awesome. <string>
Output:
Hello world.
its awesome.
You can use \n for new line and \t for tabs. Also, extra spaces/tabs are just copied the way you write them in Strings.xml so just give a couple of spaces where ever you want them.
A better way to reach this would probably be using padding/margin in your view xml and splitting up your long text in different strings in your string.xml
\n doesn't seem to work for tools:text
You can use <br/> to get a preview including line breaks, but it won't show up on the device unless you format the text using something like Html.fromHtml()
for space use \t and for a new line use \n in your XML string, like
<string name="name">\tFirst Sentence\nSecond Sentence</string>
the output will be
First Sentence
Second Sentence
Add '\t' for tab
<string name="tab">\u0009</string>
Include this line in your layout xmlns:tools="http://schemas.android.com/tools"
Now , use \n for new line and \t for space like tab.
Example :
for \n : android:text="Welcome back ! \nPlease login to your account agilanbu"
for \t : android:text="Welcome back ! \tPlease login to your account agilanbu"
Really all of the above did not work for me in Android Studio 4.
What worked was:
<br>first line\n</br>second line
Note: Both \n and br-tags was needed.

How to create multiple lines of text in android?

In my project I need to display the instructions page. The page consists of 8 instructions. So do we need to create 8 textviews to display those instructions? Is it possible to display all those instructions using one single textview?
I read about multi-line textviews.
But for my case can I do so to display all 8 instructions in one textview?
As far as I recall, the newline character \n is recognised when used in strings.xml, so you could declare your instructions there and reference it in the layout. I never found a way to do it within the layout XML itself, but there may be something.
Edit: for clarity - I mean using the escaped character, e.g.:
<string name="instructions">Line 1\nLine 2</string>
You can use \n new line character from string resource or thru code:textView.setText("1st line\n 2nd line");
You can use html to format your string: textView.setText(Html.fromHtml("item 1<br>item 2<br>"));
You can use: StringBuilder to it.

Line break in Android adds padding

I have 5-10 lines of address information that I want to insert in a layout in my Android app.
I rather not use seperate textviews, but want to have one where I can insert line breaks manually.
I do this by adding \n and it seems to work, BUT.. This also adds padding or a space, I'm not sure which one.
Example:
This XML
<string name="contact_address">
Street address\n
City\n
Country
</string>
Gives this output:
Street address
City
Country
Anyone know what could be wrong, or do I have to give up and make 5-10 seperate textviews?
Try:
<string name="contact_address">Street address\nCity\nCountry</string>
to get rid of the spaces you are putting into your XML.
I stumbled upon this and figured out a better way to keep the XML formatting and the line breaks without additional padding.
Use
<string>Line 1
\nLine 2
\nLine 3
</string>
Instead of
<string>Line 1\n
Line 2\n
Line 3
</string>

Categories

Resources