关闭

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

标签: textview聊天webandroid
600人阅读 评论(0) 收藏 举报

怎么让聊天会话页面的内容中数字和网址高亮并可点击?但是在编辑状态下不可点击?

在编辑状态下链接变为不可点击。即点item选中CheckBox而不是跳转链接或拨打电话

第一步:

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方法的注释说明

发现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);二者缺一不可

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:1519次
    • 积分:149
    • 等级:
    • 排名:千里之外
    • 原创:12篇
    • 转载:1篇
    • 译文:0篇
    • 评论:0条