Как сделать ссылки среди прочего текста фокусируемыми для доступности

У меня есть CheckedTextBox, текст которого состоит из двух SpannableStrings, одна из которых является URLSpan.

У меня вопрос, как мне сделать так, чтобы пользователь мог перемещать фокус доступности через каждый промежуток, в конечном итоге сосредотачиваясь на самом URLspan? setMovementMethod а также setLinksClickable кажется, не работает для меня.

SpannableStringBuilder builder = new SpannableStringBuilder();

SpannableString label = new SpannableString(getString(R.string.label));
label.setSpan(new ForegroundColorSpan(getResources().getColor(R.color.text_color_primary)), 0, label.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
builder.append(label);

SpannableString link = new SpannableString(getString(R.string.link);
link.setSpan(new URLSpan(mUrl), 0, link.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
builder.append(link);
builder.append(".");

mCheckedTextBox.setText(builder);

//The following two methods do not work for what I'm trying to accomplish:
mCheckedTextBox.setMovementMethod(LinkMovementMethod.getInstance());
mCheckedTextBox.setLinksClickable(true);

Я проверил документацию справки по специальным возможностям Android, и кажется, что пока пользователь слышит звонок и видит ссылку в локальном контекстном меню, этого достаточно. Тем не менее, я хотел посмотреть, смогу ли я пройти лишнюю милю, чтобы позволить пользователю прокручивать и фокусироваться на ссылочной части текста. https://support.google.com/accessibility/android/answer/6378148?hl=en

Любая помощь будет оценена.

0 ответов

Это не поддерживается платформой. Собственная документация Android рекомендует пользователям открывать локальное контекстное меню для доступа к ссылкам в TextViews:https://support.google.com/accessibility/android/answer/6378148?hl=en

Может быть, это будет самое простое решение.. у меня оно сработало.

textView.setOnClickListener(new View.OnClickListener() {
  @Override
  public void onClick(View v) {
      ClassroomLog.log(TAG, "Textview Click listener ");
      if (textView.getSelectionStart() == -1 && textView.getSelectionEnd() == -1){
          // Perform your action here
      }
  }
});
Другие вопросы по тегам