Как добавить настраиваемые действия в контекстное меню специальных возможностей.

Когда функция обратной связи для специальных возможностей включена. У меня есть требование показать мое представление с некоторыми пользовательскими действиями, когда пользователь рисует угловой жест, т.е. прокручивает вверх и вправо. Аналогично сообщениям Gmail, как показано на рисунке ниже введите здесь описание изображения

это всплывающее окно отображается, когда пользователь рисует жест действия, т. е. проводит пальцем вверх и вправо, когда фокус находится на каком-либо сообщении. Меню действий


person user4499122    schedule 25.09.2019    source источник
comment
ты нашел решение?   -  person Abhinav Tyagi    schedule 07.07.2020


Ответы (2)


Вы можете добавить пользовательское действие к объекту AccessibilityNodeInfo внутри метода onInitializeAccessibilityNodeInfo объекта AccessibilityDelegate.

Если затем действие выбирается пользователем, для представления вызывается метод performAccessibilityAction.

В примере myCustomAction — это текст, который отображается пользователю.

MyCustomView.kt

init {
    accessibilityDelegate = object : View.AccessibilityDelegate() {
        override fun onInitializeAccessibilityNodeInfo(host: View?, info: AccessibilityNodeInfo?) {
            super.onInitializeAccessibilityNodeInfo(host, info)

            info?.addAction(AccessibilityNodeInfo.AccessibilityAction(R.id.myCustomAccessibilityEvent, "myCustomAction"));
        }
    }
}

override fun performAccessibilityAction(action: Int, arguments: Bundle?): Boolean {
    if (action == R.id.myCustomAccessibilityEvent) Log.d("TAG", "Accessibility event triggered")
    return true;
}

res/values/accessibility.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <item type="id" name="myCustomAccessibilityEvent"/>
</resources>
person Antict    schedule 24.11.2020

Чтобы добавить действие доступности, достаточно приведенной ниже строки кода с использованием ViewCompat, который обратно совместим с API 21.

ViewCompat.addAccessibilityAction(viewToAddActionTo,"String to describe what the action does", (v,b) -> actionCalled);
//a sample request would look like
ViewCompat.addAccessibilityAction(swipeLayout,"Delete Item in List",(v,b) -> deleteItem(position);

Настраиваемое изображение действия

Добавление действий в локальное контекстное меню

Надеемся, что этого достаточно, действие, которое необходимо выполнить, то есть удалить, пометить, архивировать (аналогично Gmail), можно добавить в настраиваемые представления, используя это. Ключевыми моментами являются выяснение того, какое представление нуждается в действии и что оно должно выполнять.

person Hrishikesh Thakkar    schedule 25.11.2020