EditText中如果包含URL,点击可跳转


如果产品经理告诉你,我要一个EditText,用来记住一些标签,如果输入了一个网址,我点击这个网址,可以直接跳转到浏览器,那么你该怎么去实现呢?

大家都知道EditText是继承自TextView,而TextView则是可以通过添加ClickableSpan来进行定制文字的跳转的,EditText同样也可以通过这种方案来实现。
下面就先通过使用系统的URLSpan来实现这种效果。

  1. 在.xml文件中,可以给EditText先添加一个属性:
     android:autoLink="web"
  1. 在代码中,给EditText添加方法:
        //必须指定该方法,否则EditText的URL是不会进行跳转的。
        editText.setMovementMethod(LinkMovementMethod.getInstance());
        //将要给EditText赋值的参数用Sapnnable包裹一下
        Spannable spannable = new SpannableString(itemEntity.name);
        //通过Linkify来制定匹配方式
        Linkify.addLinks(spannable, Linkify.WEB_URLS);
        // 添加了零宽度空格(?\u200B???), 才可以点击到最后的位置, 否则会触发链接
        final CharSequence text = TextUtils.concat(spannable, "\u200B");
        editText.setText(text);

这样,我们就实现了EditText中包含URL可以跳转的方案了,当然,我们也可以自己定制Span。
有一个奇怪的问题,如果这个EditText是在一个ViewPager+Fragment+RecyclerView中,作为RecyclerView中的item,输入》】等符号的时候,会导致ViewPager自动切换,暂时没找到解决方案。如果有解决办法的朋友,可以回复我一下,谢谢。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,552评论 25 708
  • 内容抽屉菜单ListViewWebViewSwitchButton按钮点赞按钮进度条TabLayout图标下拉刷新...
    皇小弟阅读 46,903评论 22 665
  • 1. 我是一个欲望极少的人。 当初月薪2000,老公月薪5000,我说我觉得挺好的啊~~感觉生活也是中等啊~~惹得...
    dd6f72aa959b阅读 906评论 0 0
  • 今年是金妮55岁生日,儿子和女儿都答应今晚回来给她庆生。已经快半年没有见过儿女了,也很想见见孙子和外孙女。所以从...
    爱学习的荔枝阅读 309评论 6 4
  • 一个人可以对你产生多大的影响力? 说实话,我并不是很清楚一个人可以给另一个人有多大影响力,但确实会有影响。当然影响...
    围巍阅读 406评论 1 2