public static class View.AccessibilityDelegate
extends Object
java.lang.Object | |
↳ | android.view.View.AccessibilityDelegate |
此类表示可以在View
注册的View
以通过组合而不是继承来增强可访问性支持。 它专门针对扩展基本视图类的widget开发人员,即android.view包中的类,它们希望他们的应用程序向后兼容。
有关使应用程序可访问的更多信息,请阅读 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
开始, 在主机方法 之后调用委托方法,所有属性都将被修改而不被主机类覆盖。
Public constructors |
|
---|---|
View.AccessibilityDelegate() |
Inherited methods |
|
---|---|
From class java.lang.Object
|
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. |
AccessibilityNodeProvider getAccessibilityNodeProvider (View host)
获取用于管理以此视图为根的虚拟视图层次结构的提供者,并将其报告给探索窗口内容的 AccessibilityService
。
对于未设置可访问性委托的情况,默认实现的行为为 View#getAccessibilityNodeProvider()
。
Parameters | |
---|---|
host |
View
|
Returns | |
---|---|
AccessibilityNodeProvider |
The provider. |
也可以看看:
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. |
void onInitializeAccessibilityNodeInfo (View host, AccessibilityNodeInfo info)
使用有关主机视图的信息初始化 AccessibilityNodeInfo
。
对于未设置可访问性委托的情况,默认实现的行为为 View#onInitializeAccessibilityNodeInfo(AccessibilityNodeInfo)
。
Parameters | |
---|---|
host |
View : The View hosting the delegate. |
info |
AccessibilityNodeInfo : The instance to initialize. |
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. |
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 |
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. |
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. |
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. |