如何在Android TextView中添加换行符?
我正在尝试在TextView中添加换行符。
我试过build议\ n但是什么都不做。 这是我如何设置我的文本。
TextView txtSubTitle = (TextView)findViewById(r.id.txtSubTitle); txtSubTitle.setText(Html.fromHtml(getResources().getString(R.string.sample_string)));
这是我的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
。
我错过了什么吗?
\n
为我工作,像这样:
<TextView android:text="First line\nNext line"
好吧,算了一下:
<string name="sample_string"><![CDATA[some test line 1 <br />some test line 2]]></string>
所以在CDATA包装是必要的,并作为HTML标签添加到里面
感谢大家的帮助!
Android版本1.6不能识别\ r \ n。 而是使用:System.getProperty(“line.separator”)
String s = "Line 1" + System.getProperty ("line.separator") + "Line 2" + System.getProperty ("line.separator");
换行符(\ n) 只有在将string资源值放在引号中才有效:
<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>
是的,这很容易。
试了以上所有,做了一些我自己的研究导致以下解决scheme渲染换行符转义字符:
string = string.replace("\\\n", System.getProperty("line.separator"));
-
使用replace方法,您需要过滤转义的换行符(例如'\\ n')
-
只有这样,每一个换行符“\ n”转义字符的实例才会被渲染成实际的换行符
在这个例子中,我使用了带有JSON格式数据的Google Apps脚本noSQL数据库(ScriptDb)。
干杯:D
这对我有效
android:text="First \n Second"
有两种方法可以解决这个问题。 如果您将string用作原始string,则需要使用换行符。 如果你把它用作html,比如用Html.fromString
parsing它,那么第二个变种更好。
1)换行符\n
<string name="sample> This\nis a sample</string>
2)HTML换行标签<br>
或<br />
<string name="sample> This<br>is a sample</string>
这对我有用,也许有人会发现这有帮助:
TextView textField = (TextView) findViewById(R.id.textview1); textField.setText("First line of text" + System.getProperty("line.separator") + "Linija 2");
使用的Android Studio 0.8.9。 唯一的方法是使用\n
。 既不包括CDATA也不包括<br>
或<br />
工作。
如果您使用XML来声明您的TextView使用android:singleLine = "false"
或在Java中,请使用txtSubTitle.setSingleLine(false);
我使用以下内容:
YOUR_TEXTVIEW.setText("Got some text \n another line");
尝试仔细检查您的本地化。 可能,你试图编辑一个文件(本地化),但实际上编程使用另一个, 就像在我的情况 。 默认的系统语言是俄语,而我试图编辑英文本地化。
在我的情况下,工作解决scheme是使用“\ n”作为行分隔符:
<string name="string_one">line one. \nline two; \nline three.</string>
很简单:使用“\ n”
String aString1 = "abcd"; String aString2 = "1234"; mSomeTextView.setText(aString1 + "\n" + aString2);
\ n对应于ASCII字符0xA,即“LF”或换行符
\ r对应于ASCII字符0xD,即“CR”或回车符
这可以从第一台打字机开始,您可以select只进行换行(并只input一行)或换行+回车(也可以移动到行首)
在Android / java上,\ n对应于一个回车+换行符,否则就会'覆盖'同一行
你也可以添加"<br/>"
而不是\ n。
这是HTML转义代码<br/> <br/>
然后你可以添加文本到TexView:
articleTextView.setText(Html.fromHtml(textForTextView));
你也可以使用Android Studio的string编辑器,它会自动生成线路刹车和类似的东西…
我发现了另一种方法:是必要添加“ android:maxWidth =”40dp“ ”属性。 当然,它可能无法完美运行,但是会导致换行。
由于Html.fromHtml
弃用我只是我用这个代码来获取下一行Html.fromHtml
。
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; }
最简单的方法是去值/string(在你的资源文件夹中)
在那里声明一个string:
<string name="example_string">Line 1\Line2\Line n</string>
并在你的特定的XML文件中调用像这样的string
<TextView android:id="@+id/textView" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/example_string" />