【发布时间】:2014-12-23 09:03:47
【问题描述】:
基本上,我在 mysql db 中插入文本和换行符,如下所示:
$message = 'Hello World' . "\n";
$message .= 'This is a test' . "\n";
$message .= 'Thanks;
在数据库中保存消息时,我尝试将新行的值设置为\n、\\n、\\\n、\\\\n 甚至<br> 而不是\n 然后在android 上使用fromHtml应用程序,但没有任何效果。
在 db 中,我可以看到有新行。
在 Android 应用程序上,如果 TextView 中显示任何换行符,我希望有换行符,我尝试了各种方法,但没有任何效果,我尝试过以下操作:
String message = m.getMessage().toString();
message = message.replaceAll("\\n",
System.getProperty("line.separator"));
这里不是"\\n",我也试过"\\\n"、"\n"甚至"\\\\n"
还有:
Spanned html = Html.fromHtml(m.getMessage());
还有:
message.replaceAll("\n","<br />");
message.replaceAll("\r\n","<br />");
message.replaceAll("\r","<br />");
还有:
android:singleLine="false"
尝试了各种方法后,在 TextView 中,我得到了如下排列的文本:
Hello WorldThis is a testThanks
Hello World\This is a test\Thanks
Hello World\nThis is a test\nThanks
这是我的完整代码:
public class MessageListAdapter extends BaseAdapter {
private Context context;
private List<ListMessage> messagesItems;
public MessageListAdapter(Context context, List<ListMessage> navDrawerItems) {
this.context = context;
this.messagesItems = navDrawerItems;
}
@Override
public int getCount() {
return messagesItems.size();
}
@Override
public Object getItem(int position) {
return messagesItems.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@SuppressLint("InflateParams")
@Override
public View getView(int position, View convertView, ViewGroup parent) {
/**
* The following list not implemented reusable list items as list items
* are showing incorrect data Add the solution if you have one
* */
ListMessage m = messagesItems.get(position);
LayoutInflater mInflater = (LayoutInflater) context
.getSystemService(Activity.LAYOUT_INFLATER_SERVICE);
// Identifying the message owner
if (messagesItems.get(position).isSelf()) {
// message belongs to you, so load the right aligned layout
convertView = mInflater.inflate(R.layout.list_item_message_right,
null);
} else {
// message belongs to other person, load the left aligned layout
convertView = mInflater.inflate(R.layout.list_item_message_left,
null);
}
TextView lblFrom = (TextView) convertView
.findViewById(R.id.lblMsgFromListMessage);
TextView lblTo = (TextView) convertView
.findViewById(R.id.lblMsgToListMessage);
lblFrom.setText(m.getFromName());
// Spanned html = Html.fromHtml(m.getMessage());
// String message = html.toString();
String message = m.getMessage().toString();
message = message.replaceAll("\\n",
System.getProperty("line.separator"));
try {
lblTo.setText(message);
} catch (Exception e) {
lblTo.setText(message);
}
return convertView;
}
}
布局中的TextView:
<TextView
android:id="@+id/lblMsgToListMessage"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginRight="50dp"
android:background="@drawable/chat_bg_msg_from"
android:paddingBottom="@dimen/five_dp"
android:paddingLeft="@dimen/ten_dp"
android:paddingRight="@dimen/ten_dp"
android:paddingTop="@dimen/five_dp"
android:textColor="@color/chat_title_gray"
android:textSize="@dimen/eighteen_sp" />
baseAdaptor 有问题吗?我在某处看到this link,它建议SimpleAdapter 设置html 有问题,但就我而言,这也无济于事,因为我使用的是BaseAdapter。
非常感谢您的帮助,因为我在这个新问题上浪费了五个小时:(
【问题讨论】:
-
尝试将 \r 与 \n 作为 \n\r
标签: android textview newline baseadapter