Проблема с SpannableString и ClickableSpan - PullRequest
0 голосов
/ 23 января 2019

Я написал этот код:

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 Ответ

0 голосов
/ 23 января 2019

Похоже, вы устанавливаете строку в строке:

tv.setText(myString);

Вместо этого установите SpannableString, которую вы создаете:

tv.setText(ss);
...