Android --- 文本超链接 使用

文本超链接

类似于上图中 经常在微博中用到的 #文本超链接# 两个#号中间会有超链接的效果

文本超链接

1 、定义局部点击的块对象

// 超链接的块对象
ClickableSpan clickSapn = new ClickableSpan() {

    // 局部被点击时触发
    @Override
    public void onClick(View widget) {
        Toast.makeText(MainActivity.this," 点击了 ",Toast.LENGTH_SHORT).show();
    }
    // 更新局部效果
    @Override
    public void updateDrawState(TextPaint ds) {
        ds.setColor(Color.BLUE);
        ds.setUnderlineText(false);
        ds.setFakeBoldText(true);
    }
};

2 、针对显示文本创建 Spannable 对象

// 创建 Spannable 对象
SpannableString span = new SpannableString(str);

3 、设置效果

// 设置局部效果
//( 局部的效果对象,局部的起始位置,结束位置,包括方式 ) INCLUSIVE 表示包括 EXCLUSIVE 不包括
span.setSpan(clickSapn,9,13, Spanned.SPAN_INCLUSIVE_EXCLUSIVE);

注意多个效果的效果处理对象不能是同一个对象

4 、显示

// 将文本特效设置到文本框中
tv.setText(span, TextView.BufferType.SPANNABLE);
// 超链接时需要添加触摸监听的解析对象
tv.setMovementMethod(LinkMovementMethod.getInstance());

可以用以下代码测试一下:

public class MainActivity extends AppCompatActivity {

    private TextView tv;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        tv = (TextView) findViewById(R.id.tv);
        String str = "你好,有什么问题请百度一下,老子是不管的"; //9-13 前包括后不包括
        //超链接的块对象
        ClickableSpan clickableSpan = new ClickableSpan() {
            @Override
            public void onClick(View widget) {
                Toast.makeText(MainActivity.this,"点击了",Toast.LENGTH_SHORT).show();
            }

            //更新局部效果,使用画笔来设置
            @Override
            public void updateDrawState(TextPaint ds) {
                ds.setColor(Color.GREEN);
                ds.setUnderlineText(false);
                ds.setFakeBoldText(true);
                ds.setTextSize(35);
            }
        };
        //创建Spannable对象
        SpannableString span = new SpannableString(str);
        //设置局部效果
        //(局部的效果对象,局部的起始位置,结束位置,包括方式) INCLUSIVE表示包裹, EXCLUSIVE不包括
        span.setSpan(clickableSpan,9,13, Spanned.SPAN_INCLUSIVE_EXCLUSIVE);//此处为前包括后不包括
        span.setSpan(new ForegroundColorSpan(0xFFFF0000),0,2,Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
        //将文本特效设置到文本框中
        tv.setText(span,TextView.BufferType.SPANNABLE);
        //设置触摸监听的解析对象
        tv.setMovementMethod(LinkMovementMethod.getInstance());
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值