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

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

在编辑状态下链接变为不可点击。即点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);二者缺一不可

阅读更多
上一篇apk的几种安装方式及安装过程分析
下一篇混淆打包脚本
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭