JSON字符串到TextView换行符

时间:2017-12-12 14:22:15

标签: android json string textview newline

首先,我遇到了类似于我面临的问题的问题,这些解决方案对我不起作用。

我的Android应用程序上有一个TextView字段,它应该显示多个段落,即多个新行。我从我的在线服务器中的数据库中获取此字符串作为JSON。

文本中包含\ n,我希望它能在应用程序收到后创建新行。但它显示整个文本没有任何中断和“\ n”字符。

以下是我数据库中的文字。

First line. \nSecond line. \nThird line.

我在应用程序内收到的JSON字符串。

{
    "server_response": [{
        "news_expand": "First line. \\nSecond line. \\nThird line."
    }]
}

从JSON中提取字符串的代码。为了简单起见,我省略了获取JSONArray和JSONObject的代码。

na_expand = gna_jo.getString("news_expand");

从JSON中提取的字符串。通过打印na_expand字符串得到这个。

First line. \nSecond line. \nThird line.

用于在TextView中显示文本的代码。注意下面的'na_expand'是一个SparseArray,它存在于不同的活动中,因此是'get(position)'代码。

art_expand.setText(na_expand.get(position));

以下是我在模拟器上获得的文字。

第一行。 \ n第二行。 \ n第三行。

我在这里做错了什么?

6 个答案:

答案 0 :(得分:0)

我认为在将test设置为下面的textview之前,你应该用你的字符串中的\ n替换\ n

$orders = Order::with(['supervisors' => function ($query) use($supervisor) {
                $query->where('supervisor_id', $supervisor->id);
            }])->get();

答案 1 :(得分:0)

尝试以下代码

myTextView.setText(Html.fromHtml("yourString with additional html tags"));

它将相应地解析所有html标签,并且也会反映标签的效果。

NOte:对于大于Nougat的设备,请使用以下代码

myTextView.setText(Html.fromHtml("<h2>Title</h2><br><p>Description here</p>", Html.FROM_HTML_MODE_COMPACT));

希望有所帮助

答案 2 :(得分:0)

\字符是JSON中的转义字符。因此,当您获得\\n时,它实际上意味着\n,而不是换行符,它应该只是\n。所以你看到的是预期的行为。理想情况下,你得到的JSON应该是:

{
    "server_response": [{
        "news_expand": "First line. \nSecond line. \nThird line."
    }]
}

让您的服务器正确回复,否则您将不得不删除不必要的\

答案 3 :(得分:0)

你的TextView上有android:singleLine="true"吗?如果是,它将忽略\n并将文本放在一行中。

答案 4 :(得分:0)

您可以在为art_expand EditText设置值时添加 Auth.GoogleSignInApi.signOut(mGoogleApiClient).setResultCallback(new ResultCallback<Status>() { @Override public void onResult(@NonNull Status status) { FirebaseAuth.getInstance().signOut(); finish(); } }); 。它应该是:

 Auth.GoogleSignInApi.signOut(mGoogleApiClient).......

答案 5 :(得分:0)

所以我找到了问题的解决方法。由于我不确定问题发生在哪里\ n,我修改了数据库中存在的文本,使其具有除\ n之外的符号。例如:〜

First line.~Second line.~Third line.

您可以使用此类网站 - https://www.gillmeister-software.com/online-tools/text/remove-line-breaks.aspx将换行符替换为您想要的任何符号。

接下来,我使用StringSplitter类来破坏JSON中接收的字符串,然后再次将它与\ n一起连接。

String joined;
String expand_temp = na_expand.get(position);

TextUtils.StringSplitter splitter = new TextUtils.SimpleStringSplitter('~');
splitter.setString(expand_temp);

StringBuilder stringBuilder = new StringBuilder();
    for (String s_temp : splitter) {
        stringBuilder.append(s_temp + "\n");
    }
    joined = stringBuilder.toString().trim();

这很有效!我在setText中使用了这个字符串。

art_expand.setText(joined);