LinkTextView-自定义链接颜色和点击事件

前言

目前项目中有一个需求,就是在一个完整的TextView中加入超链接功能,而且这个超链接是跳转到指定页面而非系统默认的打开网页或者拨号之类的,于是顺手撸了一个轮子。

已实现的功能截图如下:

LinkTextView-自定义链接颜色和点击事件

实现

通过上图可以发现,需要实现的功能看起来很简单,但通过原生的TextView却很难实现,一开始我是通过工具类对TextView设置SpannableString,在SpannableString中进行着色处理,然后ClickableSpan中onClick中调用点击事件,但感觉写个工具类始终不太顺手,于是通过继承TextView子类,并在其中实现这些功能,对外暴露attr和回调Listener。

用法

目前该轮子已经上传到jcenter仓库,直接按照正常的依赖即可。

compile 'mobi.chy:LinkTextView:0.1.0'

加入依赖以后,在需要用到的地方把TextView替换成LinkTextView

<mobi.chy.widget.LinkTextView
    android:id="@+id/ltv_demo"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_margin="10dp"
    android:text="Towering genius disdains a beaten path."
    android:textSize="16sp"
    app:link="genius"
    app:linkColor="@color/colorAccent"/>

app:link
需要匹配并显示超链接的文字

app:linkColor
定制超链接文字颜色

定义好以后,在代码中加入监听

LinkTextView ltvDemo = findViewById(R.id.ltv_demo);
    ltvDemo.setOnLinkClickListener(new LinkTextView.OnLinkClickListener() {
        @Override
        public void onLinkClick() {
            Toast.makeText(DemoActivity.this,"link clicked!",Toast.LENGTH_LONG).show();
        }
    });


GitHub地址: https://github.com/bravecheng/LinkTextView

标签:none