Most visited

Recently visited

Added in API level 14

View.AccessibilityDelegate

public static class View.AccessibilityDelegate
extends Object

java.lang.Object
   ↳ android.view.View.AccessibilityDelegate


此类表示可以在View注册的View以通过组合而不是继承来增强可访问性支持。 它专门针对扩展基本视图类的widget开发人员,即android.view包中的类,它们希望他们的应用程序向后兼容。

Developer Guides

有关使应用程序可访问的更多信息,请阅读 Accessibility开发人员指南。

开发人员想要使用可访问性委托的场景是覆盖稍后API版本中引入的方法,然后是应用程序支持的最小API版本。 例如,首次引入可访问性API时,方法onInitializeAccessibilityNodeInfo(AccessibilityNodeInfo)在API版本4中不可用。 如果开发人员希望他的应用程序在API版本4设备上运行(假设应用程序使用的所有其他API均为版本4或更低版本)并利用此方法,而不是重写会破坏应用程序向后兼容性的方法,可以覆盖此委托中的相应方法,并在目标视图中注册委托,如果系统的API版本足够高,即API版本与引入onInitializeAccessibilityNodeInfo(AccessibilityNodeInfo)的API版本相同或更高。

这是一个示例实现:

if(Build.VERSION.SDK_INT> = 14){//如果API的版本高于//介绍的onInitializeAccessibilityNodeInfo的版本,我们//用一个定制的实现注册一个委托。 View view = findViewById(R.id.view_id); view.setAccessibilityDelegate(new AccessibilityDelegate(){public void onInitializeAccessibilityNodeInfo(View host,AccessibilityNodeInfo info){//让默认实现填充info.super.onInitializeAccessibilityNodeInfo(host,info); //设置一些其他信息info.setEnabled( host.isEnabled());}}); }

此委托包含与View中的辅助功能方法相对应的方法。 如果已经在View中指定了委托实现,则执行该委托中的相应方法。 委托方法的默认实现与View中的对应方法的行为完全一致,但没有设置可访问性委托。 因此,要自定义View方法的行为,客户端可以仅覆盖相应的委托方法,而不改变主机视图中其余与辅助功能相关的方法的行为。

注意:API 23之前的平台版本上, 主机方法之前调用android.widget.*包中视图的android.widget.*方法。 这可以通过覆盖onInitializeAccessibilityNodeInfo(View, AccessibilityNodeInfo)防止某些属性(如类名)被修改,因为任何更改都将被主机类所覆盖。

API 23开始, 主机方法 之后调用委托方法,所有属性都将被修改而不被主机类覆盖。

Summary

Public constructors

View.AccessibilityDelegate()

Public methods

boolean dispatchPopulateAccessibilityEvent(View host, AccessibilityEvent event)

首先将 AccessibilityEvent发给主持人 View ,然后再分发给其子女,以便将其文本内容添加到事件中。

AccessibilityNodeProvider getAccessibilityNodeProvider(View host)

获取用于管理以此视图为根的虚拟视图层次结构的提供程序,并将其报告给探索窗口内容的 AccessibilityService

void onInitializeAccessibilityEvent(View host, AccessibilityEvent event)

使用有关作为事件源的主机View的信息初始化 AccessibilityEvent

void onInitializeAccessibilityNodeInfo(View host, AccessibilityNodeInfo info)

使用有关主机视图的信息初始化 AccessibilityNodeInfo

void onPopulateAccessibilityEvent(View host, AccessibilityEvent event)

为主持人视图提供一个机会,用其文本内容填充辅助功能事件。

boolean onRequestSendAccessibilityEvent(ViewGroup host, View child, AccessibilityEvent event)

当主持人View的一个孩子要求发送一个 AccessibilityEvent并给父母(主持人)提供机会来增强事件时调用。

boolean performAccessibilityAction(View host, int action, Bundle args)

在视图上执行指定的辅助功能操作。

void sendAccessibilityEvent(View host, int eventType)

发送给定类型的可访问性事件。

void sendAccessibilityEventUnchecked(View host, AccessibilityEvent event)

发送可访问性事件。

Inherited methods

From class java.lang.Object

Public constructors

View.AccessibilityDelegate

Added in API level 14
View.AccessibilityDelegate ()

Public methods

dispatchPopulateAccessibilityEvent

Added in API level 14
boolean dispatchPopulateAccessibilityEvent (View host, 
                AccessibilityEvent event)

首先将 AccessibilityEvent发给主机 View ,然后分发给其子项,以将其文本内容添加到事件中。

对于未设置可访问性委托的情况,默认实现的行为为 View#dispatchPopulateAccessibilityEvent(AccessibilityEvent)

Parameters
host View: The View hosting the delegate.
event AccessibilityEvent: The event.
Returns
boolean True if the event population was completed.

也可以看看:

getAccessibilityNodeProvider

Added in API level 16
AccessibilityNodeProvider getAccessibilityNodeProvider (View host)

获取用于管理以此视图为根的虚拟视图层次结构的提供者,并将其报告给探索窗口内容的 AccessibilityService

对于未设置可访问性委托的情况,默认实现的行为为 View#getAccessibilityNodeProvider()

Parameters
host View
Returns
AccessibilityNodeProvider The provider.

也可以看看:

onInitializeAccessibilityEvent

Added in API level 14
void onInitializeAccessibilityEvent (View host, 
                AccessibilityEvent event)

使用有关作为事件源的主机View的信息初始化 AccessibilityEvent

对于没有设置可访问性委托的情况,默认实现的行为为 View#onInitializeAccessibilityEvent(AccessibilityEvent)

Parameters
host View: The View hosting the delegate.
event AccessibilityEvent: The event to initialize.

也可以看看:

onInitializeAccessibilityNodeInfo

Added in API level 14
void onInitializeAccessibilityNodeInfo (View host, 
                AccessibilityNodeInfo info)

使用有关主机视图的信息初始化 AccessibilityNodeInfo

对于未设置可访问性委托的情况,默认实现的行为为 View#onInitializeAccessibilityNodeInfo(AccessibilityNodeInfo)

Parameters
host View: The View hosting the delegate.
info AccessibilityNodeInfo: The instance to initialize.

也可以看看:

onPopulateAccessibilityEvent

Added in API level 14
void onPopulateAccessibilityEvent (View host, 
                AccessibilityEvent event)

为主持人视图提供一个机会,用其文本内容填充辅助功能事件。

对于没有设置可访问性委托的情况,默认实现的行为为 View#onPopulateAccessibilityEvent(AccessibilityEvent)

Parameters
host View: The View hosting the delegate.
event AccessibilityEvent: The accessibility event which to populate.

也可以看看:

onRequestSendAccessibilityEvent

Added in API level 14
boolean onRequestSendAccessibilityEvent (ViewGroup host, 
                View child, 
                AccessibilityEvent event)

当主持人视图的孩子请求发送 AccessibilityEvent并给父母(主持人)提供机会以增强事件时调用。

对于未设置可访问性委托的情况,默认实现的行为为 ViewGroup#onRequestSendAccessibilityEvent(View, AccessibilityEvent)

Parameters
host ViewGroup: The View hosting the delegate.
child View: The child which requests sending the event.
event AccessibilityEvent: The event to be sent.
Returns
boolean True if the event should be sent

也可以看看:

performAccessibilityAction

Added in API level 16
boolean performAccessibilityAction (View host, 
                int action, 
                Bundle args)

在视图上执行指定的辅助功能操作。 有关可能的辅助功能操作,请AccessibilityNodeInfo

对于未设置可访问性委托的情况,默认实现的行为为 View#performAccessibilityAction(int, Bundle)

Parameters
host View
action int: The action to perform.
args Bundle
Returns
boolean Whether the action was performed.

也可以看看:

sendAccessibilityEvent

Added in API level 14
void sendAccessibilityEvent (View host, 
                int eventType)

发送给定类型的可访问性事件。 如果未启用辅助功能,则此方法不起作用。

对于没有设置可访问性委托的情况,默认实现的行为为 View#sendAccessibilityEvent(int)

Parameters
host View: The View hosting the delegate.
eventType int: The type of the event to send.

也可以看看:

sendAccessibilityEventUnchecked

Added in API level 14
void sendAccessibilityEventUnchecked (View host, 
                AccessibilityEvent event)

发送可访问性事件。 此方法的行为与sendAccessibilityEvent(View, int)完全相同,但将空白AccessibilityEvent作为参数,并且不检查是否启用辅助功能。

对于没有设置可访问性委托的情况,默认实现的行为为 View#sendAccessibilityEventUnchecked(AccessibilityEvent)

Parameters
host View: The View hosting the delegate.
event AccessibilityEvent: The event to send.

也可以看看:

Hooray!