我正在尝试在TextView中添加换行符。
我试过建议\ n但是什么也没做。这是我设置文本的方式。
TextView txtSubTitle = (TextView)findViewById(r.id.txtSubTitle);
txtSubTitle.setText(Html.fromHtml(getResources().getString(R.string.sample_string)));
这是我的字符串:<string name="sample_string">some test line 1 \n some test line 2</string>
它应该如此显示:
some test line 1
some test line 2
但它显示如下:some test line 1 some test line 2
。
我错过了什么吗?
答案 0 :(得分:198)
\n
对我有用,就像这样:
<TextView android:text="First line\nNext line"
答案 1 :(得分:82)
好的想通了:
<string name="sample_string"><![CDATA[some test line 1 <br />some test line 2]]></string>
因此需要在CDATA中包装,并在html标签中添加内容
答案 2 :(得分:66)
Android 1.6版无法识别\ r \ n。 相反,使用:System.getProperty(“line.separator”)
String s = "Line 1"
+ System.getProperty ("line.separator")
+ "Line 2"
+ System.getProperty ("line.separator");
答案 3 :(得分:57)
如果您将字符串资源值放在这样的引号中,则换行符(\ n) 只能:
<string name="sample_string">"some test line 1 \n some test line 2"</string>
如果你没有这样的引号,它就不会进行换行:
<string name="sample_string">some test line 1 \n some test line 2</string>
是的,就这么简单。
答案 4 :(得分:29)
尝试了以上所有内容,对我自己做了一些研究,得到了以下解决方案来渲染换行转义字符:
string = string.replace("\\\n", System.getProperty("line.separator"));
使用替换方法,您需要过滤转义换行符(例如'\\ n')
只有这时换行'\ n'转义字符的每个实例都会呈现为实际的换行符
对于此示例,我使用了带有JSON格式数据的Google Apps Scripting noSQL数据库(ScriptDb)。
干杯:D
答案 5 :(得分:16)
这对我有用
android:text="First \n Second"
答案 6 :(得分:16)
有两种解决方法。
如果将字符串用作原始字符串,则需要使用换行符
字符。如果您将其用作html,例如通过用Html.fromString
解析它,
第二种变体更好。
\n
<string name="sample> This\nis a sample</string>
<br>
或<br />
<string name="sample> This<br>is a sample</string>
答案 7 :(得分:15)
这对我有用,也许有人会发现这有用:
TextView textField = (TextView) findViewById(R.id.textview1);
textField.setText("First line of text" + System.getProperty("line.separator") + "Linija 2");
答案 8 :(得分:9)
如果您使用XML来声明TextView使用android:singleLine = "false"
或使用Java,请使用txtSubTitle.setSingleLine(false);
答案 9 :(得分:9)
二手Android Studio 0.8.9。对我有用的唯一方法是使用\n
。
用CDATA包装也不用<br>
或<br />
。
答案 10 :(得分:8)
非常简单:使用“\ n”
String aString1 = "abcd";
String aString2 = "1234";
mSomeTextView.setText(aString1 + "\n" + aString2);
\ n对应于ASCII字符0xA,即“LF”或换行符
\ r \ n对应于ASCII字符0xD,即“CR”或回车
这可以追溯到第一台打字机,您可以选择只进行换行(并只键入一行),或换行+回车(也移动到行的开头)< / p>
在Android / java上\ n \ n对应一个回车+换行符,否则你只是'覆盖'同一行答案 11 :(得分:8)
我使用以下内容:
YOUR_TEXTVIEW.setText("Got some text \n another line");
答案 12 :(得分:6)
尝试仔细检查您的本地化。 可能,您尝试编辑一个文件(本地化),但实际上使用另一个文件just like in my case进行编程。默认的系统语言是俄语,而我正在尝试编辑英语本地化。
就我而言,工作解决方案是使用“\ n”作为行分隔符:
<string name="string_one">line one.
\nline two;
\nline three.</string>
答案 13 :(得分:4)
您也可以添加"<br/>"
而不是\ n。
这是&lt; br /&gt;
的HTML转义代码然后您可以向TexView添加文字:
articleTextView.setText(Html.fromHtml(textForTextView));
答案 14 :(得分:3)
你也可以使用Android Studio的字符串编辑器,它会自动生成线制动器和类似的东西......
答案 15 :(得分:2)
由于Html.fromHtml
已弃用,我只是使用此代码在下一行中获取String2。
textView.setText(fromHtml("String1 <br/> String2"));
@SuppressWarnings("deprecation")
public static Spanned fromHtml(String html){
Spanned result;
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.N) {
result = Html.fromHtml(html,Html.FROM_HTML_MODE_LEGACY);
} else {
result = Html.fromHtml(html);
}
return result;
}
答案 16 :(得分:2)
The most easy way to do it is to go to values/strings (in your resource folder)
Declare a string there:
load
And in your specific xml file just call the string like
append
答案 17 :(得分:1)
我发现了另一种方法: 需要添加&#34; android:maxWidth =&#34; 40dp&#34; &#34;属性。 当然,它可能无法完美地工作,但它会给出换行符。
答案 18 :(得分:1)
\ n不适合我。我能够通过将xml更改为文本并构建textview文本属性来解决问题,如下所示。
android:text="Line 1
Line 2
Line 3
DoubleSpace"
希望这可以帮助那些说不能为他们工作的人。
答案 19 :(得分:1)
我正在从文件中读取文本,因此我采用了一种略微的方法,因为在文件中添加\ n会导致文本中出现\ n。
final TextView textView = (TextView) findViewById(R.id.warm_up_view);
StringBuilder sb = new StringBuilder();
Scanner scanner = new Scanner(getResources().openRawResource(R.raw.warm_up_file));
while (scanner.hasNextLine()) {
sb.append(scanner.nextLine());
sb.append("\n");
}
textView.setText(sb.toString());
答案 20 :(得分:1)
据我所知,在以前版本的 android studio 中使用单独的行“\n”代码。但是新的(4.1.2)使用“
<string name="string_name">Sample text 1 \n Sample text 2 </string>
新的:
<string name="string_name">Sample text 1 <br/> Sample text 2 </string>
答案 21 :(得分:0)
也许您可以将 lf 放入文本中,但它不会显示?确保控件有足够的高度。例如:
正确:
android:layout_height="wrap_content"
可能是错误的:
android:layout_height="10dp"
答案 22 :(得分:0)
对于我来说,我通过添加以下内容解决了这个问题:
android:inputType="textMultiLine"
答案 23 :(得分:0)
尝试一下:
TextView calloutContent = new TextView(getApplicationContext());
calloutContent.setTextColor(Color.BLACK);
calloutContent.setSingleLine(false);
calloutContent.setLines(2);
calloutContent.setText(" line 1" + System.getProperty ("line.separator")+" line2" );
答案 24 :(得分:0)
我觉得需要一个更完整的答案来描述它如何更彻底地工作。
首先,如果需要高级格式化,请查看how to use HTML in string resources上的手册。
然后,您可以使用<br/>
等。但是,这需要使用代码设置文本。
如果只是纯文本,则有许多方法可以在静态string resources中转义换行符(LF)。
最干净的方法是将字符串用双引号引起来。
这样一来,空白就可以完全按照其显示的方式进行解释,而不会折叠。
然后,您可以简单地通常以这种方式使用换行符(不使用缩进)。
<string name="str1">"Line 1.
Line 2.
Line 3."</string>
请注意,某些字符在此模式下需要特殊的转义(例如\"
)。
下面的转义序列也可以在引用模式下工作。
使用XML / HTML实体

或
来避开XML中换行符的最优雅方法是使用其代码点(十六进制为10或0xA)。这是转义任何字符的XML方法。
但是,这似乎仅在引用模式下有效。
另一种方法是简单地使用\n
,尽管它对可读性有负面影响,但在我看来(由于XML中不是特殊的转义序列,因此Android Studio不会突出显示它)。
<string name="str1">"Line 1.
Line 2. Line 3."</string>
<string name="str1">"Line 1.\nLine 2.\nLine 3."</string>
<string name="str1">Line 1.\nLine 2.\nLine 3.</string>
在任何这些转义序列之后,请勿包含换行符或任何空格,因为这将被解释为多余的空格。
答案 25 :(得分:-1)
使用这样的文本分隔符(\ n):
<string name="sample_string"><![CDATA[some test line 1 \n some test line 2]]></string>