Android开发经验总结篇

TextView部分文字上色,并为其添加监听

2018-02-05  本文已影响10人  zhengLH

【需求】如下图,点击红色字体,实现逻辑跳转?

效果图.png

【实现】
(1)Spannable 修改字体样式
(2)添加ClickableSpan监听

【核心代码】

   String str  =  "有天我睡醒看到我的身边没有你";  // 哈哈这是《病变》其中一句歌词啦 
    SpannableString span = new SpannableString(str);
    span.setSpan(new ClickableSpan() {
        @Override
        public void onClick(View widget) {
            //  跳转逻辑;
          Toast.makeText(SpannableActivity.this,"我被点击了",
                     Toast.LENGTH_SHORT).show();

        }

        @RequiresApi(api = Build.VERSION_CODES.M)
        @Override
        public void updateDrawState(TextPaint ds) {
            // super.updateDrawState(ds);
            //去掉下划线
            ds.setUnderlineText(true);
            //去掉点击背景色
             // ds.bgColor = getColor(R.color.colorWhite);
             // 距离文本基线的距离
             // ds.baselineShift = 20;
        }
        }, 7, str.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);

    span.setSpan(new ForegroundColorSpan(getColor(R.color.colorAccent)),7, str.length(),

            Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
    mTvContent.setText(span);
    mTvContent.setMovementMethod(LinkMovementMethod.getInstance());

【xml 布局文件】

<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.LinearLayoutCompat
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="center">

    <TextView
        android:id="@+id/tv_content"
        android:padding="@dimen/padding_15dp"
        android:layout_height="wrap_content"
        android:layout_width="wrap_content"
        android:text="@string/spanable_content"/>

</android.support.v7.widget.LinearLayoutCompat>

【其他友情链接】http://blog.csdn.net/u010231625/article/details/70483615

上一篇下一篇

猜你喜欢

热点阅读