我很难在android中的ClickListener
中的Text的特定部分设置SpannableTextView
。
我有这样的文字:
注册即表示您同意条款和服务
我想将clicklistener设置为粗体部分?有可能吗?
答案 0 :(得分:4)
是的,这是可能的。
private void prepareTerms(){
String termsAndConditionsText = ...;
String discoverTermsText = ...;
SpannableString ss = new SpannableString(discoverTermsText);
int index = discoverTermsText.indexOf(termsAndConditionsText);
ss.setSpan(
new ClickableSpan() {
@Override
public void onClick(View widget) {
// open a webview here if you want
}
},
index,
index + termsAndConditionsText.length(),
SpannableString.SPAN_EXCLUSIVE_EXCLUSIVE
);
mTermAndCondTextView.setText(ss);
mTermAndCondTextView.setMovementMethod(LinkMovementMethod.getInstance());
}
答案 1 :(得分:0)
您可以使用android.text.Spannable类中的方法 setSpan
中提供的完整示例和必要信息在您的字符串中“通过注册即表示您同意条款和服务”,起始值为35,结尾为stringObj.length
答案 2 :(得分:0)
SpannableStringBuilder builder = new SpannableStringBuilder();
builder.setSpan(new ClickableSpan() {
@Override
public void onClick(View widget) {
// click function
}
}, start_index, end_index, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
textview.setText(builder);
答案 3 :(得分:0)
试试这段代码:
String text1 = "By registering you agree to the" + " ";
String text2 = "Terms And Services";
SpannableString spannableString = new SpannableString(text1 + text2);
ClickableSpan clickableSpan = new ClickableSpan() {
@Override
public void onClick(View view) {
// listen click here
}
@Override
public void updateDrawState(TextPaint ds) {
super.updateDrawState(ds);
ds.setUnderlineText(true);
ds.setColor(Color.BLACK);
}
};
spannableString.setSpan(clickableSpan, text1.length(), text1.length() + text2.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
textview.setText(spannableString);
textview.setMovementMethod(LinkMovementMethod.getInstance());
textview.setHighlightColor(Color.BLACK);