2016-11-25 14 views
1

использования:Android озвучиваться Keep выделены позиции на поворота экрана

  1. Включить в Google TalkBack доступность услуги и перемещаться к приложения (например, Google Коммуникатор)
  2. В этом приложении, при условии, что вам будет представлен список пунктов , чтобы выбрать, произвольно перейти к одному из них с помощью жестов Talkback (проведите вправо или просто нажмите один раз на одном из них)
  3. Поворот экрана

Ожидаемое поведение:

  • Ранее выделенный элемент должен еще быть выделены; пользователь должен быть в состоянии продолжать это навигационная
  • Приложение Google Коммуникатор является прекрасным примером этого правильного поведения

Messenger After rotation

Мой Саншайн поведение приложение:

  • Ранее выделенный элемент не выделяется после экрана Вращение
  • Пользователь должен снова перейти к ранее выбранному пункту
  • В зависимости от экрана, находя, и имеющий выбранный элемент снова может быть боль ... не то, что мы хотим, чтобы побудить к нашему пользователю

Sunshine After rotation

Как это реализовать? Я думаю, как решение, в Events Events и перехватывать их ... но это не кажется правильным, не кажется «лучшей практикой» (например, создание пользовательского представления и реализация методов обработка этих событий)

! Обратите внимание, что зеленый выделен элемент списка, кажется, не быть сосредоточенным (getCurrentFocused() возвращаетнулевые)

! Обратите внимание, что элементы списка сфокусированы если мы будем использовать D-Pad навигации, вместо TalkBack навигации (но это другое обсуждение ...)


LE:

  • Я потратить весь день на этом, пытаясь «получить фокус» от , выделенный элемент, но элемент НЕ сфокусированный.Вот почему я полагаю , что эта функция должна быть решена каким-либо иным образом, и я хотел бы знать ваш (!) испытало мнения, прежде чем я провести еще 2 день воссоздания всех используемой Android компонентов (как Я полагаю, что это можно сделать - это не звучит очень «лучшей практики», не так ли )
  • Это нЕ домашнее задание, нет ничего плохого в мой текущий код (так,? нет кода для публикации, если только не хотелось бы, чтобы весь мой проект) и, учитывая, что это мой фид я не смог прикрепить более 2 фотографий (поэтому отсутствуют экраны «до»)
  • Просто дайте мне хороший совет, основанный на опыте, и я буду исполнить и разместить готовые, рабочий код здесь.
+0

Две вещи: первое: Это выглядит как домашнее задание ... Для этого (как и для любых других вопросов по Stackoverflow) показывают усилия, которые вы сделали, чтобы решить это! Если нет кода и с этим нет ошибок, вы здесь не правы! 2nd: Если это имеет какое-то отношение к Android (маленький крошечный намек здесь), для этого есть тег. Другие теги, которые вы использовали, скорее всего, не будут напрямую посещаться другими, поскольку они могут применяться к любому языку программирования! – geisterfurz007

+1

Это НЕ домашнее задание! «Sunshine» - приложение, разработанное как часть бесплатного курса (Udacity - «Разработка приложений для Android»). Нет кода, потому что у моего кода нет ничего плохого! Я не спрашиваю здесь: «Почему мой код не работает? Вот образец!». Я спрашиваю, «как ты поступаешь так». Ответ прост, если вы сделали это уже, в своей жизни. Пожалуйста, не троллируйте мое первое и единственное сообщение ... – veve

+0

Я знаю, что это ваш первый пост из-за очереди обзора. Это не предназначалось для троллинга вообще. Формулировка вопроса подразумевает ощущение копирования и вставленной задачи откуда-то, и это, в большинстве случаев, является домашним заданием, к сожалению. И если ваш код не имеет ничего плохого, и он работает, почему возникает вопрос. Я не реализовал что-то подобное, но на самом деле я не понимаю, что сказать. Почему вы спрашиваете, есть ли у вас уже действующий код? – geisterfurz007

ответ

0

Он должен работать из коробки, если вы реализуете стабильные идентификаторы в вашем RecyclerView.Adapter (и, возможно, отключить ItemAnimator на RecyclerView (rv.setItemAnimator(null)), которые вы можете сделать, если условно TalkBack включена).

Вот a blog post I wrote about the item animator bug.

+1

Интересный ответ. Когда я писал об этой проблеме, я использовал ListView. Теперь я переключился на RecyclerView. Я попробую снова реализовать эту функцию доступности (поскольку я отложил вопрос). Я дам вам знать. Большое спасибо! – veve

0

Я столкнулся с той же проблемой, работая над тем же проектом.

Подсказка: listView.setItemChecked(int position, boolean value);

Удачи :)

+0

Я двинулся дальше, но ваше предложение заставляет меня любопытно! Большое спасибо! – veve

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

  • Нет связанных вопросов^_^