Поддержка доступности Android?

Я прошел через много вопросов, демонстрацию API относительно функции доступности в Android, но это не помогло.

Я хочу поддерживать доступность в моем приложении для Android. Встроенная доступность заботится обо всех фокусируемых элементах и ​​считывает Hints правильно при нажатии.

Я хочу запускать события доступности, когда пользователь нажимает на TextView. И при первом открытии экрана я хочу, чтобы он считывал пользовательскую информацию, которую я предоставляю. Мне удалось сделать это с dispatchPopulateAccessibilityEvent но он читает каждый раз, когда экран возобновляется. Также я не могу определить, какой вид отправляет событие.

2 ответа

Вы можете использовать вызов "sendAccessibilityEvent" из вашего TextView, например так:

if (AccessibilityManager.getInstance(mContext).isEnabled()) {
    setContentDescription("The content description for this view");
    sendAccessibilityEvent(AccessibilityEvent.TYPE_VIEW_FOCUSED);
}

Считываемый текст (в зависимости от того, какая служба доступности используется) будет основан на описании контента, а не обязательно на тексте в TextView.

Если вы хотите, чтобы ваше представление было сфокусированным и анонсировать описание связанного содержимого для этого представления, вы можете использовать,

view.requestFocus()
view.sendAccessibilityEvent(AccessibilityEvent.TYPE_VIEW_FOCUSED)

Если вы просто хотите объявить об изменении только один раз и не хотите менять contentDescription связанный с этим видом, вы можете использовать

view.announceForAccessibility = "Alert to a user about some event."

Примечание. AnnounceForAccessibility не будет фокусироваться на вашем доступе.

Вы можете использовать

view.sendAccessibilityEvent(AccessibilityEvent.TYPE_VIEW_FOCUSED);

На ваше TextViewТакже вы можете добавить "announceForAccessibility", но вам следует проверить, если версия больше или равна Jelly Bean, но для этого вам нужно изменить представление.

Наконец, если вы хотите объявить "заголовок" страницы, например, действие, в которое вы могли бы добавить setTitle для действия и поместить свой текст, не забудьте использовать панель инструментов с заголовком, поскольку этот setTitle по умолчанию переопределит заголовок панели действий.,

Дайте мне знать, если у вас есть другие проблемы.

Другие вопросы по тегам