下面列出了android.view.View#isImportantForAccessibility ( ) 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。
public static boolean isImportantForAccessibility(View view) {
return view.isImportantForAccessibility();
}
/** See {@link View#isImportantForAccessibility()}. */
public static boolean isImportantForAccessibility(View view) {
if (view == null) {
return false;
}
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
return view.isImportantForAccessibility();
} else if (Build.VERSION.SDK_INT < Build.VERSION_CODES.JELLY_BEAN) {
// Prior to Jelly Bean, all Views were considered important for accessibility.
return true;
} else {
// On APIs between 16 and 21, we must piece together accessibility importance from the
// available properties. We return false incorrectly for some cases where unretrievable
// listeners prevent us from determining importance.
// If the developer marked the view as explicitly not important, it isn't.
int mode = view.getImportantForAccessibility();
if ((mode == View.IMPORTANT_FOR_ACCESSIBILITY_NO)
|| (mode == View.IMPORTANT_FOR_ACCESSIBILITY_NO_HIDE_DESCENDANTS)) {
return false;
}
// No parent view can be hiding us. (APIs 19 to 21)
ViewParent parent = view.getParent();
while (parent instanceof View) {
if (((View) parent).getImportantForAccessibility()
== View.IMPORTANT_FOR_ACCESSIBILITY_NO_HIDE_DESCENDANTS) {
return false;
}
parent = parent.getParent();
}
// Interrogate the view's other properties to determine importance.
return (mode == View.IMPORTANT_FOR_ACCESSIBILITY_YES)
|| isActionableForAccessibility(view)
|| hasListenersForAccessibility(view)
|| (view.getAccessibilityNodeProvider() != null)
|| (ViewCompat.getAccessibilityLiveRegion(view)
!= ViewCompat.ACCESSIBILITY_LIVE_REGION_NONE);
}
}
/**
* Sets the source to be a virtual descendant of the given <code>root</code>.
* If <code>virtualDescendantId</code> equals to {@link View#NO_ID} the root
* is set as the source.
* <p>
* A virtual descendant is an imaginary View that is reported as a part of the view
* hierarchy for accessibility purposes. This enables custom views that draw complex
* content to report them selves as a tree of virtual views, thus conveying their
* logical structure.
* </p>
*
* @param root The root of the virtual subtree.
* @param virtualDescendantId The id of the virtual descendant.
*/
public void setSource(@Nullable View root, int virtualDescendantId) {
enforceNotSealed();
boolean important = true;
int rootViewId = AccessibilityNodeInfo.UNDEFINED_ITEM_ID;
mSourceWindowId = AccessibilityWindowInfo.UNDEFINED_WINDOW_ID;
if (root != null) {
important = root.isImportantForAccessibility();
rootViewId = root.getAccessibilityViewId();
mSourceWindowId = root.getAccessibilityWindowId();
}
setBooleanProperty(PROPERTY_IMPORTANT_FOR_ACCESSIBILITY, important);
mSourceNodeId = AccessibilityNodeInfo.makeNodeId(rootViewId, virtualDescendantId);
}