编辑:
我的应用程序允许用户发布评论以供所有其他用户查看。我想允许用户在他们的评论中将某些词加粗或斜体等,这样当他们发表评论时,其他人也能看到粗体词等。
目前我可以使单词加粗,但是当文本保存到我的远程数据库服务器时,它被保存为普通文本,我无法找出哪些词是粗体的,哪些不是。
从 EditText 保存文本时,如何保留粗体/斜体/下划线...格式?
编辑:
我的应用程序允许用户发布评论以供所有其他用户查看。我想允许用户在他们的评论中将某些词加粗或斜体等,这样当他们发表评论时,其他人也能看到粗体词等。
目前我可以使单词加粗,但是当文本保存到我的远程数据库服务器时,它被保存为普通文本,我无法找出哪些词是粗体的,哪些不是。
从 EditText 保存文本时,如何保留粗体/斜体/下划线...格式?
很容易。使用EditText.getText获取文本,实现Spanned接口。
然后您需要以某种方式在文本中标记粗体部分,为此您可能会使用良好的旧 HTML 格式,这意味着您最终会得到带有某种格式的文本(可存储在数据库中)。使用Html.toHtml将 Spanned 转换为 (HTML) 字符串。将结果保存到数据库或您需要的地方。
反向过程是获取您的 HTML 字符串并将其转换为 Spanned,然后将其设置为 EditText。使用Html.fromHtml来完成此操作。
final SpannableStringBuilder sb = new SpannableStringBuilder("Text from the edit Text");
final StyleSpan bss = new StyleSpan(android.graphics.Typeface.BOLD); // Span to make text bold
final StyleSpan iss = new StyleSpan(android.graphics.Typeface.ITALIC);//Span to make text italic
sb.setSpan(bss, 0, 10, Spannable.SPAN_INCLUSIVE_INCLUSIVE); // make first 10 characters Bold
sb.setSpan(iss, 10, 20, Spannable.SPAN_INCLUSIVE_INCLUSIVE); // make last 10 characters Italic
//Set text or save it in db
etx.setText(sb);