Проблема с SpannableString и ClickableSpan
Я написал этот код:
public class BaldrActivity extends AppCompatActivity {
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.a_dei_baldr);
String myString = "Click Here!";
SpannableString ss = new SpannableString(myString);
ClickableSpan clickableSpan1 = new ClickableSpan() {
@Override
public void onClick(View widget) {
Toast.makeText(BaldrActivity.this, "hello world", Toast.LENGTH_SHORT).show();
}
@Override
public void updateDrawState(TextPaint ds) {
super.updateDrawState(ds);
ds.setColor(Color.BLUE);
ds.setUnderlineText(false);
}
};
ss.setSpan(clickableSpan1, 6, 11, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
TextView tv = findViewById(R.id.tv_baldr1);
tv.setText(myString);
tv.setMovementMethod(LinkMovementMethod.getInstance());
}
}
но... ничего не меняется. Я имею в виду, что код построен правильно, приложение не аварийно завершает работу, TextView фактически изменяется в "Click Here!", Но на него нельзя нажать, и его внешний вид не меняется... почему?
1 ответ
Решение
Похоже, вы устанавливаете строку в строке:
tv.setText(myString);
вместо этого установите SpannableString, который вы создаете:
tv.setText(ss);