Android 小功能之 TextView 只设置某些文字可点击

本文展示了如何在Android中实现TextView只让部分文字具有点击效果,提供了详细的效果展示和具体代码实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、效果展示

我们先来看下效果:

效果展示

二、代码实现

注释写的已经很详细了,其中tvLoginPrivacyPolicy是我需要设置对应地方有点击效果的TextView,具体代码实现如下所示:

private void setTvLoginPrivacyPolicySpecialText() {
	// 不需要点击的文字
    tvLoginPrivacyPolicy.setText(R.string.Bylogging);
    // 设置需要点击的文字
    SpannableString clickString1 = new SpannableString(getString(R.string.PrivacyPolicy));
    // 设置需要点击文字的样式
    clickString1.setSpan(new ClickableSpan() {
        @Override
        public void onClick(View widget) {
        	// 点击之后需要做的操作
            forwardPrivacyPolicy();
        }

        @Override
        public void updateDrawState(TextPaint ds) {
            super.updateDrawState(ds);
            // 设置可点击文字的颜色
            ds.setColor(getResources().getColor(R.color.clickText));
        }
        // 0-->clickString1.length()这个长度就是需要点击的文字长度
    }, 0, clickString1.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
    // 将需要点击的文字添加到我们的TextView中
    tvLoginPrivacyPolicy.append(clickString1);
    // 继续添加不需要点击的文字组装TextView
    tvLoginPrivacyPolicy.append(new SpannableString(" " + getString(R.string.And)) + " ");
    // 添加需要点击的文字
    SpannableString clickString2 = new SpannableString(getString(R.string.TermsAndConditions));
    // 设置需要点击文字的样式
    clickString2.setSpan(new ClickableSpan() {
        @Override
        public void onClick(View widget) {
            forwardPrivacyPolicy();
        }

        @Override
        public void updateDrawState(TextPaint ds) {
            super.updateDrawState(ds);
            //设置颜色
            ds.setColor(getResources().getColor(R.color.clickText));
        }
        // 0-->clickString2.length()这个长度就是需要点击的文字长度
    }, 0, clickString2.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
    tvLoginPrivacyPolicy.append(clickString2);
    // 设置点击文字点击效果为透明
    tvLoginPrivacyPolicy.setHighlightColor(Color.TRANSPARENT);
	// 开始响应点击事件
    tvLoginPrivacyPolicy.setMovementMethod(LinkMovementMethod.getInstance());
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值