summaryrefslogtreecommitdiff
path: root/core/java/android
diff options
context:
space:
mode:
Diffstat (limited to 'core/java/android')
-rw-r--r--core/java/android/view/NotificationHeaderView.java46
1 files changed, 32 insertions, 14 deletions
diff --git a/core/java/android/view/NotificationHeaderView.java b/core/java/android/view/NotificationHeaderView.java
index 3069e5ade582..c46acae38c2c 100644
--- a/core/java/android/view/NotificationHeaderView.java
+++ b/core/java/android/view/NotificationHeaderView.java
@@ -22,6 +22,7 @@ import android.graphics.Canvas;
import android.graphics.Outline;
import android.graphics.Rect;
import android.graphics.drawable.Drawable;
+import android.os.Bundle;
import android.util.AttributeSet;
import android.view.accessibility.AccessibilityNodeInfo;
import android.widget.ImageView;
@@ -63,6 +64,33 @@ public class NotificationHeaderView extends ViewGroup {
}
}
};
+ final AccessibilityDelegate mExpandDelegate = new AccessibilityDelegate() {
+
+ @Override
+ public boolean performAccessibilityAction(View host, int action, Bundle args) {
+ if (super.performAccessibilityAction(host, action, args)) {
+ return true;
+ }
+ if (action == AccessibilityNodeInfo.ACTION_COLLAPSE
+ || action == AccessibilityNodeInfo.ACTION_EXPAND) {
+ mExpandClickListener.onClick(mExpandButton);
+ return true;
+ }
+ return false;
+ }
+
+ @Override
+ public void onInitializeAccessibilityNodeInfo(View host, AccessibilityNodeInfo info) {
+ super.onInitializeAccessibilityNodeInfo(host, info);
+ // Avoid that the button description is also spoken
+ info.setClassName(getClass().getName());
+ if (mExpanded) {
+ info.addAction(AccessibilityNodeInfo.AccessibilityAction.ACTION_COLLAPSE);
+ } else {
+ info.addAction(AccessibilityNodeInfo.AccessibilityAction.ACTION_EXPAND);
+ }
+ }
+ };
public NotificationHeaderView(Context context) {
this(context, null);
@@ -92,6 +120,9 @@ public class NotificationHeaderView extends ViewGroup {
mAppName = findViewById(com.android.internal.R.id.app_name_text);
mHeaderText = findViewById(com.android.internal.R.id.header_text);
mExpandButton = (ImageView) findViewById(com.android.internal.R.id.expand_button);
+ if (mExpandButton != null) {
+ mExpandButton.setAccessibilityDelegate(mExpandDelegate);
+ }
mIcon = findViewById(com.android.internal.R.id.icon);
mProfileBadge = findViewById(com.android.internal.R.id.profile_badge);
}
@@ -230,7 +261,7 @@ public class NotificationHeaderView extends ViewGroup {
public void setOnClickListener(@Nullable OnClickListener l) {
mExpandClickListener = l;
setOnTouchListener(mExpandClickListener != null ? mTouchListener : null);
- setFocusable(l != null);
+ mExpandButton.setOnClickListener(mExpandClickListener);
updateTouchListener();
}
@@ -380,19 +411,6 @@ public class NotificationHeaderView extends ViewGroup {
return this;
}
- @Override
- public void onInitializeAccessibilityNodeInfo(AccessibilityNodeInfo info) {
- super.onInitializeAccessibilityNodeInfo(info);
- if (mExpandClickListener != null) {
- AccessibilityNodeInfo.AccessibilityAction expand
- = new AccessibilityNodeInfo.AccessibilityAction(
- AccessibilityNodeInfo.ACTION_CLICK,
- getContext().getString(
- com.android.internal.R.string.expand_action_accessibility));
- info.addAction(expand);
- }
- }
-
public ImageView getExpandButton() {
return mExpandButton;
}