diff --git a/res/layout/contextual_slice_full_tile.xml b/res/layout/contextual_slice_full_tile.xml
index 4b1155e3e97..b6ab410f341 100644
--- a/res/layout/contextual_slice_full_tile.xml
+++ b/res/layout/contextual_slice_full_tile.xml
@@ -19,7 +19,8 @@
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
- style="@style/ContextualCardStyle">
+ style="@style/ContextualCardStyle"
+ android:importantForAccessibility="no">
@@ -28,10 +29,9 @@
android:theme="@style/Theme.Settings.ContextualCard"
style="@style/ContextualCardSliceViewStyle"
android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:importantForAccessibility="no"/>
+ android:layout_height="wrap_content"/>
-
+
\ No newline at end of file
diff --git a/res/layout/contextual_slice_sticky_tile.xml b/res/layout/contextual_slice_sticky_tile.xml
index 5991068dfc6..2e7a2befa63 100644
--- a/res/layout/contextual_slice_sticky_tile.xml
+++ b/res/layout/contextual_slice_sticky_tile.xml
@@ -19,14 +19,14 @@
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
- style="@style/ContextualCardStyle">
+ style="@style/ContextualCardStyle"
+ android:importantForAccessibility="no">
+ android:layout_height="wrap_content"/>
diff --git a/src/com/android/settings/homepage/contextualcards/slices/SliceContextualCardRenderer.java b/src/com/android/settings/homepage/contextualcards/slices/SliceContextualCardRenderer.java
index 5f1e9559c5c..740c328692b 100644
--- a/src/com/android/settings/homepage/contextualcards/slices/SliceContextualCardRenderer.java
+++ b/src/com/android/settings/homepage/contextualcards/slices/SliceContextualCardRenderer.java
@@ -21,6 +21,7 @@ import static android.app.slice.Slice.HINT_ERROR;
import android.content.ContentResolver;
import android.content.Context;
import android.net.Uri;
+import android.os.Bundle;
import android.util.ArrayMap;
import android.util.ArraySet;
import android.util.Log;
@@ -29,6 +30,9 @@ import android.widget.Button;
import androidx.annotation.LayoutRes;
import androidx.annotation.VisibleForTesting;
+import androidx.core.view.AccessibilityDelegateCompat;
+import androidx.core.view.ViewCompat;
+import androidx.core.view.accessibility.AccessibilityNodeInfoCompat;
import androidx.lifecycle.Lifecycle;
import androidx.lifecycle.LifecycleObserver;
import androidx.lifecycle.LifecycleOwner;
@@ -167,6 +171,27 @@ public class SliceContextualCardRenderer implements ContextualCardRenderer, Life
resetCardView(holder);
mSliceLiveDataMap.get(card.getSliceUri()).removeObservers(mLifecycleOwner);
});
+
+ ViewCompat.setAccessibilityDelegate(getInitialView(holder),
+ new AccessibilityDelegateCompat() {
+ @Override
+ public void onInitializeAccessibilityNodeInfo(View host,
+ AccessibilityNodeInfoCompat info) {
+ super.onInitializeAccessibilityNodeInfo(host, info);
+ info.addAction(AccessibilityNodeInfoCompat.ACTION_DISMISS);
+ info.setDismissable(true);
+ }
+
+ @Override
+ public boolean performAccessibilityAction(View host, int action, Bundle args) {
+ if (action == AccessibilityNodeInfoCompat.ACTION_DISMISS) {
+ mControllerRendererPool.getController(mContext,
+ card.getCardType()).onDismissed(card);
+ }
+ return super.performAccessibilityAction(host, action, args);
+ }
+ });
+
}
@OnLifecycleEvent(Lifecycle.Event.ON_STOP)