首先,我遇到了类似于我面临的问题的问题,这些解决方案对我不起作用。
我的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第三行。
我在这里做错了什么?
答案 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);