我无法让 setSpan 工作
I can't get setSpan working
我有一个字符串,例如:“@user 喜欢你的照片!2 小时前”,细字体。
这个字符串由三部分组成;
1:@user -> 它应该是 typeface.normal 并且可以点击
2:喜欢你的照片! -> 这保持不变(薄和黑色)
3: 2 小时前 -> 这应该是灰色的。
Spannable spannedTime = new SpannableString(time);
Spannable clickableUsername = new SpannableString(username);
clickableUsername.setSpan(new StyleSpan(Typeface.NORMAL), 0, clickableUsername.length(), 0); // this is for 1st part to make it normal typeface
spannedTime.setSpan(new BackgroundColorSpan(Color.GRAY), 0, spannedTime.length(), 0); // this is for 3rd part to make it gray
clickableUsername.setSpan(new ClickableSpan() {
@Override
public void onClick(View view) {
CallProfileActivity();
}
}, 0, clickableUsername.length(), Spanned.SPAN_EXCLUSIVE_INCLUSIVE);// this is for 1st part to make it clickable
this.setText(clickableUsername + " " + notificationBody + " " + spannedTime);
但是其中 none 有任何效果。
java 编译器不知道 Spannable
。当你这样做时
this.setText(clickableUsername + " " + notificationBody + " " + spannedTime);
java 创建一个 String
连接所有 SpannableString
.
要像您打算的那样创建可跨越的字符串,您应该使用 SpannableStringBuilder
。
SpannableStringBuilder spannable = new SpannableStringBuilder();
spannable.append(clickableUsername, new StyleSpan(Typeface.NORMAL), 0);
spannable.append(' ').append(notificationBody).append(' ');
spannable.append(time, new BackgroundColorSpan(Color.GRAY), 0);
spannable.setSpan(new ClickableSpan() {
@Override
public void onClick(View view) {
CallProfileActivity();
}
}, 0, username.length(), Spanned.SPAN_EXCLUSIVE_INCLUSIVE);
this.setText(spannable);
我有一个字符串,例如:“@user 喜欢你的照片!2 小时前”,细字体。
这个字符串由三部分组成;
1:@user -> 它应该是 typeface.normal 并且可以点击
2:喜欢你的照片! -> 这保持不变(薄和黑色)
3: 2 小时前 -> 这应该是灰色的。
Spannable spannedTime = new SpannableString(time);
Spannable clickableUsername = new SpannableString(username);
clickableUsername.setSpan(new StyleSpan(Typeface.NORMAL), 0, clickableUsername.length(), 0); // this is for 1st part to make it normal typeface
spannedTime.setSpan(new BackgroundColorSpan(Color.GRAY), 0, spannedTime.length(), 0); // this is for 3rd part to make it gray
clickableUsername.setSpan(new ClickableSpan() {
@Override
public void onClick(View view) {
CallProfileActivity();
}
}, 0, clickableUsername.length(), Spanned.SPAN_EXCLUSIVE_INCLUSIVE);// this is for 1st part to make it clickable
this.setText(clickableUsername + " " + notificationBody + " " + spannedTime);
但是其中 none 有任何效果。
java 编译器不知道 Spannable
。当你这样做时
this.setText(clickableUsername + " " + notificationBody + " " + spannedTime);
java 创建一个 String
连接所有 SpannableString
.
要像您打算的那样创建可跨越的字符串,您应该使用 SpannableStringBuilder
。
SpannableStringBuilder spannable = new SpannableStringBuilder();
spannable.append(clickableUsername, new StyleSpan(Typeface.NORMAL), 0);
spannable.append(' ').append(notificationBody).append(' ');
spannable.append(time, new BackgroundColorSpan(Color.GRAY), 0);
spannable.setSpan(new ClickableSpan() {
@Override
public void onClick(View view) {
CallProfileActivity();
}
}, 0, username.length(), Spanned.SPAN_EXCLUSIVE_INCLUSIVE);
this.setText(spannable);