AccessibilityNodeProvider Class
Definition
Important
Some information relates to prerelease product that may be substantially modified before it’s released. Microsoft makes no warranties, express or implied, with respect to the information provided here.
This class is the contract a client should implement to enable support of a virtual view hierarchy rooted at a given view for accessibility purposes.
[Android.Runtime.Register("android/view/accessibility/AccessibilityNodeProvider", DoNotGenerateAcw=true)]
public abstract class AccessibilityNodeProvider : Java.Lang.Object
[<Android.Runtime.Register("android/view/accessibility/AccessibilityNodeProvider", DoNotGenerateAcw=true)>]
type AccessibilityNodeProvider = class
inherit Object
- Inheritance
- Attributes
Remarks
This class is the contract a client should implement to enable support of a virtual view hierarchy rooted at a given view for accessibility purposes. A virtual view hierarchy is a tree of imaginary Views that is reported as a part of the view hierarchy when an AccessibilityService
explores the window content. Since the virtual View tree does not exist this class is responsible for managing the AccessibilityNodeInfo
s describing that tree to accessibility services. </p>
The main use case of these APIs is to enable a custom view that draws complex content, for example a monthly calendar grid, to be presented as a tree of logical nodes, for example month days each containing events, thus conveying its logical structure.
A typical use case is to override View#getAccessibilityNodeProvider()
of the View that is a root of a virtual View hierarchy to return an instance of this class. In such a case this instance is responsible for managing AccessibilityNodeInfo
s describing the virtual sub-tree rooted at the View including the one representing the View itself. Similarly the returned instance is responsible for performing accessibility actions on any virtual view or the root view itself. For example:
<div> <div class="ds-selector-tabs"><section><h3 id="kotlin">Kotlin</h3>
// "view" is the View instance on which this class performs accessibility functions.
class MyCalendarViewAccessibilityDelegate(
private var view: MyCalendarView) : AccessibilityDelegate() {
override fun getAccessibilityNodeProvider(host: View): AccessibilityNodeProvider {
return object : AccessibilityNodeProvider() {
override fun createAccessibilityNodeInfo(virtualViewId: Int):
AccessibilityNodeInfo? {
when (virtualViewId) {
<var>host-view-id</var> -> {
val node = AccessibilityNodeInfo.obtain(view)
node.addChild(view, <var>child-view-id</var>)
// Set other attributes like screenReaderFocusable
// and contentDescription.
return node
}
<var>child-view-id</var> -> {
val node = AccessibilityNodeInfo
.obtain(view, virtualViewId)
node.setParent(view)
node.addAction(ACTION_SCROLL_UP)
node.addAction(ACTION_SCROLL_DOWN)
// Set other attributes like focusable and visibleToUser.
node.setBoundsInScreen(
Rect(<var>coords-of-edges-relative-to-screen</var>))
return node
}
else -> return null
}
}
override fun performAction(
virtualViewId: Int,
action: Int,
arguments: Bundle
): Boolean {
if (virtualViewId == <var>host-view-id</var>) {
return view.performAccessibilityAction(action, arguments)
}
when (action) {
ACTION_SCROLL_UP.id -> {
// Implement logic in a separate method.
navigateToPreviousMonth()
return true
}
ACTION_SCROLL_DOWN.id ->
// Implement logic in a separate method.
navigateToNextMonth()
return true
else -> return false
}
}
}
}
}
</section><section><h3 id="java">Java</h3>
final class MyCalendarViewAccessibilityDelegate extends AccessibilityDelegate {
// The View instance on which this class performs accessibility functions.
private final MyCalendarView view;
MyCalendarViewAccessibilityDelegate(MyCalendarView view) {
this.view = view;
}
@Override
public AccessibilityNodeProvider getAccessibilityNodeProvider(View host) {
return new AccessibilityNodeProvider() {
@Override
@Nullable
public AccessibilityNodeInfo createAccessibilityNodeInfo(int virtualViewId) {
if (virtualViewId == <var>host-view-id</var>) {
AccessibilityNodeInfo node = AccessibilityNodeInfo.obtain(view);
node.addChild(view, <var>child-view-id</var>);
// Set other attributes like screenReaderFocusable and contentDescription.
return node;
} else if (virtualViewId == <var>child-view-id</var>) {
AccessibilityNodeInfo node =
AccessibilityNodeInfo.obtain(view, virtualViewId);
node.setParent(view);
node.addAction(ACTION_SCROLL_UP);
node.addAction(ACTION_SCROLL_DOWN);
// Set other attributes like focusable and visibleToUser.
node.setBoundsInScreen(
new Rect(<var>coordinates-of-edges-relative-to-screen</var>));
return node;
} else {
return null;
}
}
@Override
public boolean performAction(int virtualViewId, int action, Bundle arguments) {
if (virtualViewId == <var>host-view-id</var>) {
return view.performAccessibilityAction(action, arguments);
}
if (action == ACTION_SCROLL_UP.getId()) {
// Implement logic in a separate method.
navigateToPreviousMonth();
return true;
} else if (action == ACTION_SCROLL_DOWN.getId()) {
// Implement logic in a separate method.
navigateToNextMonth();
return true;
} else {
return false;
}
}
};
}
}
</section></div></div>
Java documentation for android.view.accessibility.AccessibilityNodeProvider
.
Portions of this page are modifications based on work created and shared by the Android Open Source Project and used according to terms described in the Creative Commons 2.5 Attribution License.
Constructors
AccessibilityNodeProvider() | |
AccessibilityNodeProvider(IntPtr, JniHandleOwnership) |
A constructor used when creating managed representations of JNI objects; called by the runtime. |
Fields
HostViewId |
The virtual id for the hosting View. |
Properties
Class |
Returns the runtime class of this |
Handle |
The handle to the underlying Android instance. (Inherited from Object) |
JniIdentityHashCode | (Inherited from Object) |
JniPeerMembers | |
PeerReference | (Inherited from Object) |
ThresholdClass |
This API supports the Mono for Android infrastructure and is not intended to be used directly from your code. |
ThresholdType |
This API supports the Mono for Android infrastructure and is not intended to be used directly from your code. |
Methods
AddExtraDataToAccessibilityNodeInfo(Int32, AccessibilityNodeInfo, String, Bundle) |
Adds extra data to an |
Clone() |
Creates and returns a copy of this object. (Inherited from Object) |
CreateAccessibilityNodeInfo(Int32) |
Returns an |
Dispose() | (Inherited from Object) |
Dispose(Boolean) | (Inherited from Object) |
Equals(Object) |
Indicates whether some other object is "equal to" this one. (Inherited from Object) |
FindAccessibilityNodeInfosByText(String, Int32) |
Finds |
FindFocus(NodeFocus) |
Find the virtual view, such as a descendant of the host View, that has the specified focus type. |
GetHashCode() |
Returns a hash code value for the object. (Inherited from Object) |
JavaFinalize() |
Called by the garbage collector on an object when garbage collection determines that there are no more references to the object. (Inherited from Object) |
Notify() |
Wakes up a single thread that is waiting on this object's monitor. (Inherited from Object) |
NotifyAll() |
Wakes up all threads that are waiting on this object's monitor. (Inherited from Object) |
PerformAction(Int32, Action, Bundle) |
Performs an accessibility action on a virtual view, such as a descendant of the
host View, with the given |
PerformAction(Int32, GlobalAction, Bundle) |
Performs an accessibility action on a virtual view, i.e. a descendant of the
host View, with the given |
SetHandle(IntPtr, JniHandleOwnership) |
Sets the Handle property. (Inherited from Object) |
ToArray<T>() | (Inherited from Object) |
ToString() |
Returns a string representation of the object. (Inherited from Object) |
UnregisterFromRuntime() | (Inherited from Object) |
Wait() |
Causes the current thread to wait until it is awakened, typically by being <em>notified</em> or <em>interrupted</em>. (Inherited from Object) |
Wait(Int64, Int32) |
Causes the current thread to wait until it is awakened, typically by being <em>notified</em> or <em>interrupted</em>, or until a certain amount of real time has elapsed. (Inherited from Object) |
Wait(Int64) |
Causes the current thread to wait until it is awakened, typically by being <em>notified</em> or <em>interrupted</em>, or until a certain amount of real time has elapsed. (Inherited from Object) |
Explicit Interface Implementations
IJavaPeerable.Disposed() | (Inherited from Object) |
IJavaPeerable.DisposeUnlessReferenced() | (Inherited from Object) |
IJavaPeerable.Finalized() | (Inherited from Object) |
IJavaPeerable.JniManagedPeerState | (Inherited from Object) |
IJavaPeerable.SetJniIdentityHashCode(Int32) | (Inherited from Object) |
IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates) | (Inherited from Object) |
IJavaPeerable.SetPeerReference(JniObjectReference) | (Inherited from Object) |
Extension Methods
JavaCast<TResult>(IJavaObject) |
Performs an Android runtime-checked type conversion. |
JavaCast<TResult>(IJavaObject) | |
GetJniTypeName(IJavaPeerable) |