Как сделать ссылки среди прочего текста фокусируемыми для доступности
У меня есть 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
}
}
});