Как установить несколько интервалов для текста TextView (кликабельный и жирный)
mSpannableString = new SpannableString("12:00PM");
mSpannableString.setSpan(clickableSpan, 0, 7, 0);
mSpannableString.setSpan(new StyleSpan(Typeface.BOLD), 0, 7, 0);
TextView textView = new TextView(getContext());
textView.setMovementMethod(LinkMovementMethod.getInstance());
textView.setText(mSpannableString);
mCancelFrom.setText(getString(R.string.cancel_from_text) + " " + mSpannableString);
Мне нужно установить текст жирным шрифтом и сделать его кликабельным. код выше я написал в диалоге. Строка "12:00PM" отображается. но это не имеет смелого эффекта и не является кликабельным. можешь мне помочь с этим?
2 ответа
Попробуйте это, это может помочь вам
SpannableString ss = new SpannableString("12:00PM");
ClickableSpan clickableSpan = new ClickableSpan() {
@Override
public void onClick(View textView) {
startActivity(new Intent(SendSMS.this, SendSMS.class));
}
@Override
public void updateDrawState(TextPaint ds) {
super.updateDrawState(ds);
ds.setUnderlineText(false);
}
};
ss.setSpan(new StyleSpan(Typeface.BOLD), 0, 7, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
ss.setSpan(clickableSpan, 0, 7, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
mCancelFrom.setText(getString(R.string.cancel_from_text) + " " + ss);
Когда вы выполняетеmCancelFrom.setText(getString(R.string.cancel_from_text) + " " + mSpannableString);
который выполняет:getString (R.string.cancel_from_text) + "" + mSpannableString
Результатом вышеупомянутой операции является "String", поэтому фреймворк вызывает mSpannableString.toString, чтобы иметь возможность добавлять две предыдущие строки, и вы теряете интервалы и т. Д.
Примерно так (это почти точно ваш код):
String tmp = getString(R.string.cancel_from_text) + " ";
mSpannableString = new SpannableString(tmp + "12:00PM");
mSpannableString.setSpan(clickableSpan, tmp.length(), mSpannableString.length(), 0);
mSpannableString.setSpan(new StyleSpan(Typeface.BOLD), tmp.length(), mSpannableString.length(), 0);
TextView textView = new TextView(getContext());
textView.setMovementMethod(LinkMovementMethod.getInstance());
textView.setText(mSpannableString);