Android(安卓)小功能之 TextView 只设置某些文字可点击
16lz
2021-01-26
一、效果展示
我们先来看下效果:
二、代码实现
注释写的已经很详细了,其中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());}
更多相关文章
- Android(安卓)TextView控件
- android中回调函数
- Android软件开发环境搭建
- android基础6——设置圆角按钮
- Android(安卓)GridView控件 使用
- Android(安卓)journey3 @点击事件的4种写法
- fragment内嵌fragment之间传值+切换fragment
- button,imagebutton背景设置透明或者半透明
- 适配Android(安卓)7.0出现读取外部存储问题解决方法