Android SpannableString 基本用法

以下介绍SpannableString 对文字的一些特别处理:比如字体,颜色,下划线,链接和点击事件。
先看效果:

这里写图片描述

布局代码就不贴了,很简单就是3个TextView.现在看MainActivity中的代码实现:

    private TextView mTvContent1;
    private TextView mTvContent2;
    private TextView mTvContent3;
    private String contentStr1 = "点击事件,下划线,字体颜色";
    private String contentStr2 = "百度链接";
    private String contentStr3 = "粗体";


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);


        //设置点击事件,下划线,字体颜色
        mTvContent1 = (TextView) findViewById(R.id.tv_content1);
        SpannableString ss1 = new SpannableString(contentStr1);
        ss1.setSpan(new ClickableSpan() {

            @Override
            public void updateDrawState(TextPaint ds) {
                super.updateDrawState(ds);
                ds.setUnderlineText(true);//设置下划线
                ds.setColor(Color.RED);//设置字体颜色
            }

            @Override
            public void onClick(View widget) {
                Toast toast = Toast.makeText(MainActivity.this, "点击", Toast.LENGTH_SHORT);
                toast.show();
            }
        }, 0, contentStr1.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);

        mTvContent1.setText(ss1);
        mTvContent1.setHighlightColor(Color.TRANSPARENT);
        mTvContent1.setMovementMethod(LinkMovementMethod.getInstance());

        //设置链接
        mTvContent2= (TextView) findViewById(R.id.tv_content2);
        SpannableString ss2 = new SpannableString(contentStr2);
        ss2.setSpan(new URLSpan("http://www.baidu.com"), 0, contentStr2.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
        mTvContent2.setText(ss2);
        mTvContent2.setMovementMethod(LinkMovementMethod.getInstance());

        //设置粗体:
        mTvContent3= (TextView) findViewById(R.id.tv_content3);
        SpannableString ss3 = new SpannableString(contentStr3);
        ss3.setSpan(new StyleSpan(android.graphics.Typeface.BOLD), 0, contentStr3.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
        mTvContent3.setText(ss3);
    }


}

以上就是整个代码:其中对于点击和链接事件,要特别注意需要setMovementMethod,否则可能不会响应事件。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值