2013-11-08 4 views
1

Я добавляю доступность к приложению, и я использую Talk Talk для проверки доступности, и я не могу заблокировать определенные виды из выбранных.talkback объявляет скрытые виды

Помимо удаления всех прослушивателей и фокусируемости, есть ли лучший способ отключить представления от получения фокуса, когда они скрыты на экране ... т.е. есть ли «ящик» для открытия и отключения выбора элементов в контейнере содержимого? Похоже, должно быть чистое решение для этого или, возможно, исправление требуется на стороне команды talkback.

Благодаря

+0

Вы хотите отключить объявления Talkback навсегда? – ozbek

+1

Вы можете установить 'importantForAccessibility =" 2 "' для представления, чтобы позволить 'Talkback' игнорировать его. Но View по-прежнему будет фокусироваться/кликать. Поскольку «DrawerLayout» является потомком класса «View», свойство 'importantForAccessibility' должно работать для него. См. Документацию для класса View для чтения возможных значений, которые это свойство может принять: [Ссылка] (http://developer.android.com/reference/android/view/View.html#attr_android:importantForAccessibility). Тем не менее, ваш вопрос не совсем ясен в отношении того, чего вы пытаетесь достичь. – Vikram

+0

Благодарим за отзыв. Ваше решение работает только для уровня API> = 16, однако разговор был в андроиде до уровня API 16. Как вопрос непонятен? Я просто хочу отключить «анонсы» talkback, когда мое приложение находится в определенных состояниях для определенных просмотров. Помимо моего примера ящика ... Еще один пример: когда определенные представления установлены на невидимые, они все равно будут «объявлены», и я хотел бы предотвратить это, не изменяя видимость. – Maurycy

ответ

0

Посмотрите на AccessibilityDelegateCompat имеющейся в библиотеке поддержки-v4 - Link.

Создать экземпляр AccessibilityDelegateCompat и переопределить следующий метод:

@Override 
public void onInitializeAccessibilityNodeInfo(View host, 
             AccessibilityNodeInfoCompat info) { 

    // Check if 'host' is visible or not before calling the super method 
    if (host.getVisibility() != View.INVISIBLE) { 
     super.onInitializeAccessibilityNodeInfo(host, info); 
    } 
} 

Наконец, использовать статический метод ViewCompat.setAccessibilityDelegate(View, AccessibilityDelegateCompat) для представлений, которые являются невидимыми.

Смежные вопросы