防微博内容展示,使用Html.fromHtml(),解决内容不能换行的问题

使用Html.fromHtml(),解决内容不能换行的问题,模仿微博内容展示效果。

一、需求要实现的效果

如下图中箭头指向的微博内容部分,包含超链接,点击超链接后要跳转到相应的WebView页面。(csdn上传图片试了好多遍也不成功,大家脑补一下吧,辛苦了)。

  

二、 实现思路

首先获取网络数据,通过Html.fromHtml()解析获取到的数据,这时超链接<a></a>、段落符<p>、换行符<br>等将会被展示成对应的表现形式,就会出现上图所示的效果。然后我们解决第二个问题,点击跳转的问题,直接上代码。

/**
 * 设置TextView中URL由内嵌浏览器打开
 * @param context
 * @param textView
*/
public static void setOpenUrlByBrowser(Context context, TextView textView) {
textView.setMovementMethod(LinkMovementMethod.getInstance());
CharSequence text = textView.getText();
if (text instanceof Spannable) {
int end = text.length();
Spannable sp = (Spannable) textView.getText();
URLSpan[] urls = sp.getSpans(0, end, URLSpan.class);
SpannableStringBuilder style = new SpannableStringBuilder(text);
style.clearSpans();
for (URLSpan url : urls) {
MyURLSpan myURLSpan = new MyURLSpan(context, url.getURL());
style.setSpan(myURLSpan, sp.getSpanStart(url), sp.getSpanEnd(url), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
}
textView.setText(style);
}
}

其中主要用到的类有 Spannable、SpannableStringBuilder,如果有不了解两类的同学,可以Google这连个类,后面有时间也会分析这两个类的实现。至于MyURLSpan是自定义的一个超链接点击之后的操作类,在这里实现界面的跳转。So,我们实现了展示和跳转。

三、 遇到的问题

如上编码之后,我遇到了文本不能换行的问题,如在我的应用中我发的一遍帖子带有换行的帖子,但是在帖子详情页面没有换行显示。

四、 分析原因

查看服务端返回的数据,发现时这样的。 “ 这是一个测试用的帖子\n我想测试他能不能换行\n”,于是找到了原因,html不能解析“\n”。

五、 解决办法

最吊炸天的地方来了,将所有的“\n”转换成“<br>”,代码如下,这样就可以解决问题。

private String parseContent(String content) {
if(StringUtil.isNotEmpty(content)){
content = content.replace("\n","<br>");
}
return content;
}

六、 总结

来自地球的小伙伴们,如上只是这个小问题的解决思路,聪明的你一定会举一反三,在parseContent中去充分发挥,解决其他的问题,今天是七夕,祝情人节快乐奥,O(∩_∩)O哈哈~

版权声明:本文为博主原创文章,转载请注明出处。

时间: 2024-10-09 20:18:47

防微博内容展示,使用Html.fromHtml(),解决内容不能换行的问题的相关文章

asp.net网站防恶意刷新的Cookies与Session解决方法

本文实例讲述了asp.net网站防恶意刷新的Cookies与Session解决方法,是WEB程序设计中非常实用的技巧.分享给大家供大家参考.具体实现方法如下: Session版实现方法: public double time; public const int freetime = 1;//防刷冰冻时间间隔,当前为1秒 #region 防恶意刷新 if (Session.SessionID == null) {   Response.End(); } else if (Session["sion

Android项目实战(十六):QQ空间实现(一)—— 展示说说中的评论内容并有相应点击事件

原文:Android项目实战(十六):QQ空间实现(一)-- 展示说说中的评论内容并有相应点击事件 大家都玩QQ空间客户端,对于每一个说说,我们都可以评论,那么,对于某一条评论: 白雪公主 回复 小矮人 : 你们好啊~ 我们来分析一下: 1.QQ空间允许我们 点击 回复人和被回复人的名字就可以进入对于用户的个人主页(即点击文字“白雪公主”/“小矮人”,就可以进入到这俩用户相应个人主页) 2.点击 回复的文字,就可以对回复人进行回复(即点击评论中回复的内容“你们好啊~”,便对弹出一个编辑框对回复人

cocos2d-x笔记4: TextField不能删除内容,以及我的解决办法。。。

3.0正式版,win32下,TextField按下backspace键不能删除内容.网上搜了下,很早就有的问题了,正式版了竟然还不解决...真心无力吐槽啊!!!这种巨大而又明显的Bug... 从昨天突发奇想用Cocos2d做软件开始,经历了太多的摧残,简直听者伤心,闻者落泪... 已经去Cocoachina论坛反馈了,虽然基本白费口舌...思路就是监听按键事件,调用setText修改内容... 1 auto listener = EventListenerKeyboard::create();

分享 WebBrowser显示Html内容3点细节技巧,解决刷新后空白

直接显示Html内容,不像直接导航网址容易处理: 问题:按微软的控件属性提示,可以用WebBrowser.DocumentText 属性赋值 ,但是这种赋值,只是首次有效,后续切换都没啥作用. 下面给出自己追求摸索的两点技巧: 1:通过WebBrowser.Document.Write(html)方法来输出html内容显示. 由于WebBrowser 需要经历几个事件后才会显示,直接输出是不行的,为此,需要有点技巧的使用: wbShowBlog.Navigate("about:blank&quo

小程序提升界面使用体验 丰富了内容展示组件

昨晚,微信小程序开放了更多页面内能力,主要是提升界面使用体验.丰富内容展示组件.完善系统硬件能力,这些能力的提升可以帮助开发者更好地优化使用体验,让用户爱上你的小程序.以下是相关能力的展示 01—提升界面使用体验 小程序可以灵活调整顶部标题栏的颜色,同自己的页面保持色彩统一.小程序可以获取页面布局,了解用户屏幕滑动情况,并使用页面滚动接口.例如看到一半的文章,开发者可以定位并记住浏览的位置.在用户下次打开小程序时,立即滚动到未读处,方便用户继续阅读.地图.视频和画布上,现在可以展示简单的图片及文

比对两个Word文件内容是否一致的C#解决办法

using System; using System.Windows.Forms; using System.Diagnostics; using Microsoft.Office.Interop.Word; namespace WindowsFormsApplication1 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void button1_Click(obj

小内容将成新主流,内容产业巨变再起?

前不久逻辑思维与papi酱分道扬镳,让很多人对自媒体内容创业开始产生了怀疑.不过papi酱给瑞士顶级奢侈品手表积家代言又重新点燃了大家对自媒体第二春到来的希望之火. 而就在前几日,在内容产业有个新词语--"小内容"却开始流行了起来.阿里巴巴文化娱乐集团 移动事业群总裁何小鹏在钛媒体2016T-ADGE年度盛典上提出"小内容"的说法,并由此引发了业内外人士对于小内容时代的高度关注.Papi酱与积家的深度合作,恰恰从侧面应证了小内容时代的价值. 在何小鹏看来:小内容正在

【实例】正则表达式利用grep和sed处理日志内容,获取所需的内容

[实例]正则表达式利用grep和sed处理日志内容, 获取所需的内容 app.log文件内容: 2014-09-11 00:00:01,516 INFO [com.tt.bb.thread.Control] - Socket连接:/182.105.83.33:532172014-09-12 10:00:06,555 INFO [com.tt.bb.thread.Control] - Socket连接:/182.113.83.51:53249 2014-09-13 20:00:11,587 INF

android :点击某个按钮弹出在原有布局中没有(或者存在)内容 :以删除原有布局内容为例

主要涉及了(1)对布局中某个控件的监听 (2)在布局文件中设置可显示,删除的参数 visibility的参数的有三个,在这里我只设置了一个,可见的. android:visibility="visible" 剩下的和他的用法相同. (3)在代码中监听控件后,对visibility的参数重新设置. 效果图:点击按钮后edittext不见了 (1)点击高级按钮前 (2)点击高级按钮后 (1)布局文件 <?xml version="1.0" encoding=&qu