您的位置:首页 > 移动开发 > Android开发

聊天TextView中识别数字网址高亮并可点击

2015-11-19 11:05 471 查看
怎么让聊天会话页面的内容中数字和网址高亮并可点击?但是在编辑状态下不可点击?



第一步:

TextView设置属性
android:autoLink="all"//匹配包括none, web, email, phone, map, all
android:linksClickable="true"
就可以高亮电话号网址等。。并可点击进行跳转


第二步:

怎么在编辑状态下使其不可点击


if (INTERFACE_CODE == INTERFACE_CODE_EDIT){
mHolder.tvReceiveBody.setLinksClickable(false);
}else{
mHolder.tvSendBody.setLinksClickable(true);
}
mHolder.tvSendBody.setText(body);


通过上面的mHolder.tvReceiveBody.setLinksClickable(false)不好使,在编辑状态下仍然可点击跳转

第三步:

通过查找相关stackoverflow,如下 http://stackoverflow.com/questions/2734270/how-do-i-make-links-in-a-textview-clickable 看到一个解决办法textview.setMovementMethod(LinkMovementMethod.getInstance());

差不多了,回到编译环境看看setMovementMethod方法的注释说明




发现setMovementMethod就是移动跳转的一个方法,参数就是跳转的具体实现,可以为空就不跳转了。SO问题解决:

上面的代码片加一个 mHolder.tvSendBody.setMovementMethod(null);就哦了。如下:

if (INTERFACE_CODE == INTERFACE_CODE_EDIT){
mHolder.tvSendBody.setLinksClickable(false);
mHolder.tvSendBody.setMovementMethod(null);
}else{
mHolder.tvSendBody.setLinksClickable(true);
mHolder.tvSendBody.setMovementMethod(LinkMovementMethod.getInstance());

}
mHolder.tvSendBody.setText(body);


但是setLinksClickable(false);和setMovementMethod(null);二者缺一不可
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  textview 聊天 web android