View.AccessibilityDelegate

public static class View.AccessibilityDelegate
extendsObject

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

added in API level 14.


这个类代表可以在View中被注册的代理, 通过组装而不是继承的方式来增强辅助功能支持. 它是针对继承基本View类的widget的开发者, 比如android.view中的类, 这样可以让他们的程序向后兼容.

开发者指导

关于更多信息请访问Accessibility开发者指导.

开发者使用AccessibilityDelegate的目的是为了能重写更高版本的API的方法, 而不是用来支持低版本应用的. 例如, onInitializeAccessibilityNodeInfo(AccessibilityNodeInfo)在 API version 4时是无效的. 如果开发者想要让他的应用程序运行在API version 4设备上(应用程序使用的所有其他API都是版本4或更低版本)并使用这个方法, 而不是通过重写这个方法的方式, 会破坏应用程序向后的兼容性, 如果系统的API版本足够高, 他可以在这个代理里重写这个方法并把这个代理注册给需要响应的View.

下面是实现的例子:

if (Build.VERSION.SDK_INT >= 14) {
     // If the API version is equal of higher than the version in
     // which onInitializeAccessibilityNodeInfo was introduced we
     // register a delegate with a customized implementation.
     // 我们使用自定义的实现来注册一个代理.
     View view = findViewById(R.id.view_id);
     view.setAccessibilityDelegate(new AccessibilityDelegate() {
         public void onInitializeAccessibilityNodeInfo(View host,
                 AccessibilityNodeInfo info) {
             // Let the default implementation populate the info.
             super.onInitializeAccessibilityNodeInfo(host, info);
             // Set some other information.
             info.setEnabled(host.isEnabled());
         }
     });
 }

这个代理包含与View中辅助方法相对应的方法. 如果已经指定了代理, 则View中的实现将处理与此代理中的相应方法. 代理方法默认的实现的行为与没有实现代理的View中对应方法一样. 因此,要定制View方法的行为,客户端只能覆盖相应的委托方法, 而不能改变主机View中其余的accessibility关联的方法.

注意: 在API 23之前的平台版本, 在android.widget.* 包里的view的代理方法在主机方法之前被调用. 这可以防止通过重写

onInitializeAccessibilityNodeInfo(View, AccessibilityNodeInfo)来修改某些属性(比如类名), 任何的修改要通过主机类来修改.

从API 23开始, 代理方法在主机方法之后被调用, 要修改的所有属性不会被主机类所覆盖.

公共构造器


View.AccessibilityDelegate

added in API level 14.

View.AccessibilityDelegate ()

公共方法


onInitializeAccessibilityNodeInfo

added in API level 14.

void onInitializeAccessibilityNodeInfo (View host, AccessibilityNodeInfo info)

使用host view的信息来初始化一个AccessibilityNodeInfo.

在没有accessibility代理的情况下的默认实现行为是View#onInitializeAccessibilityNodeInfo(AccessibilityNodeInfo).

参数
host View: The View hosting the delegate.
info AccessibilityNodeInfo: 初始化的实例.

See also:

performAccessibilityAction

added in API level 16.

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

在View里执行指定的accessibility动作. Performs the specified accessibility action on the view. 关于可能需要的动作参考AccessibilityNodeInfo.

在没有accessibility代理的情况下的默认实现行为是View#performAccessibilityAction(int, Bundle).

参数
host View
info int: The action to perform.
args Bundle
返回值
boolean 表示动作是否被执行.

See also:

results matching ""

    No results matching ""