问题 在Android TextView中,是否可以插入段落?


以下是我遇到的问题类型的示例。我有一个pojo中的数据,我需要在textview中显示...数据有伪代码,用[p]表示每个段落

我想以某种方式将[p]解析为文本视图中显示的段落。可以这样做吗?有什么东西我可以替代[p],它会在textview中创建一个新的段落吗?

Question question = new Question();
question.setText("Here is the first paragraph.[p] And this should be the second."); 

TextView view = (TextView) findViewById(R.id.qtext);
view.setText(question.getParsedText());

10131
2018-06-05 06:34


起源

您是否尝试使用<p>,因为它是支持的标签之一 TextView: commonsware.com/blog/Android/2010/05/26/... 话虽如此,我发现Sebi的答案更好(并且是我使用的),因为它不会不必要地将HTML标记混合到你的字符串中。 - Christopher Orr
你知道我从来没有尝试过 - 下面的答案似乎可以解决问题......那么你认为哪种方式更好? / n / n或<p>? - JohnRock
如果您只是想使用段落,我会使用\ n \ n,因为那样你就不必从HTML()中获取这些东西了。另一方面,你必须解析你的字符串。但是如果你喜欢给部分文本上色等等这个html的东西非常好。 - RoflcoptrException
\ n导致问题。当Android的换行系统插入一个中断,然后你的硬编码后,你偶尔会得到空白行。 - James Moore


答案:


嗨,我将解析整个字符串,然后用\ n或甚至\ n \ n替换每个[p]。

\ n在String中生成一个换行符。例如,使用它:

question.setText("Here is the first paragraph.\n\n And this should be the second.");`

可以轻松做到的方法是 与string.replace(...)


10
2018-06-05 07:00



谢谢!我简直不敢相信。我的印象是行不通的。 - JohnRock
我试过Android 1.6模拟器,<p>根本没用。所以我不得不使用\ n。它像魔术一样工作。 - Jay Mayu
遗憾的是,这通常不足以成为一个坏主意。最终可能会有额外的不需要的换行符。 TextView会自行插入换行符,如果你的\ n落在同一个地方,你会看到一个空白行。 - James Moore
如果你想要一个缩进的段落,用\ n \ t交换\ n \ n - ThumbsDP


你也可以试试这个

String summary = "<html><font color=\"#FFFFFF\"" +

             <p align="+ "\"" +"left" + "\""+ ">" +  "MY data" +"</p>"+

                "</font></html>";
mTextView.setText(Html.fromHtml(summary));

5
2017-12-07 05:25





TextView tw = findViewById(R.id.t);
tw.setText("first line\nsecond line\nthird line");

1
2018-03-05 19:52



请为您的代码添加说明 - Noam Hacker
另外在这个注释中\ n是新行,像文本分解的段落需要2行一行空白然后是第二段的第一行。 - Martin Barker


<br> 和 <p> 如果你需要其他格式,如粗体,并在中间的工作 Html.fromHtml

import android.app.Activity;
import android.os.Bundle;
import android.text.Html;
import android.widget.TextView;

public class Main extends Activity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        final TextView tv = new TextView(this);
        tv.setText(Html.fromHtml("first<br><b>second</b>"));
        setContentView(tv);
    }
}

在Android 22上测试过。


0
2018-02-08 13:51