版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_32320807/article/details/64905131
SpannableStringBuilder使用方式
安卓开发者我们通常会遇到一行文字里面部分文字的大小,颜色不同,部门文字还有链接,如果用TextView一个个拼接显的尤其笨拙,这个时候我们就需要SpannableStringBuilder来帮我们解决这个问题:
首先我们想要显示如下的效果我们应该怎么实现呢:
直接上代码:
private void initTipText() {
SpannableStringBuilder span = new SpannableStringBuilder();
span.append("同意");
int length = span.length();
span.append("《App服务协议》");
span.setSpan(new ClickableSpan() {
@Override
public void updateDrawState(TextPaint ds) {
ds.setColor(getResources().getColor(R.color.base_color_A));
}
@Override
public void onClick(View widget) {
Intent intent = new Intent(LoginActivity.this, WebViewActivity.class);
intent.putExtra("title", "App服务协议");
intent.putExtra("url", LinkManager.getInstance().getAgreementLink());
startActivity(intent);
}
}, length, span.length(), Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
span.append("、");
length = span.length();
span.append("《隐私协议》");
span.setSpan(new ClickableSpan() {
@Override
public void updateDrawState(TextPaint ds) {
ds.setColor(getResources().getColor(R.color.base_color_A));
}
@Override
public void onClick(View widget) {
Intent intent = new Intent(LoginActivity.this, WebViewActivity.class);
intent.putExtra("title", "隐私协议");
intent.putExtra("url", LinkManager.getInstance().getPrivacyLink());
startActivity(intent);
}
}, length, span.length(), Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
mTipText.setMovementMethod(LinkMovementMethod.getInstance());
mTipText.setText(span);
}
mTipText.setMovementMethod(LinkMovementMethod.getInstance());
Spanned.SPAN_EXCLUSIVE_EXCLUSIVE(前后都不包括)、Spanned.SPAN_INCLUSIVE_EXCLUSIVE(前面包括,后面不包括)、Spanned.SPAN_EXCLUSIVE_INCLUSIVE(前面不包括,后面包括)、Spanned.SPAN_INCLUSIVE_INCLUSIVE(前后都包括)。