From 51a52c943744b0ecbd8a3c994e4893171534d91b Mon Sep 17 00:00:00 2001 From: dpastor Date: Thu, 4 Apr 2024 10:46:59 +0200 Subject: [PATCH] ANDROID-14435 Make bottom sheet handle accessible in order to be able to close window on tap (#338) --- .../mistica/catalog/ui/ComponentCatalogActivity.kt | 3 ++- .../src/main/java/com/telefonica/mistica/sheet/Sheet.kt | 5 +++++ library/src/main/res/layout/sheet_layout.xml | 8 +++++--- 3 files changed, 12 insertions(+), 4 deletions(-) diff --git a/catalog/src/main/java/com/telefonica/mistica/catalog/ui/ComponentCatalogActivity.kt b/catalog/src/main/java/com/telefonica/mistica/catalog/ui/ComponentCatalogActivity.kt index edbe216c0..bb1c3426b 100644 --- a/catalog/src/main/java/com/telefonica/mistica/catalog/ui/ComponentCatalogActivity.kt +++ b/catalog/src/main/java/com/telefonica/mistica/catalog/ui/ComponentCatalogActivity.kt @@ -5,6 +5,7 @@ package com.telefonica.mistica.catalog.ui import android.os.Bundle import android.view.View import androidx.annotation.StyleRes +import androidx.appcompat.app.AppCompatActivity import androidx.compose.runtime.Composable import androidx.fragment.app.Fragment import androidx.fragment.app.FragmentActivity @@ -79,7 +80,7 @@ import com.telefonica.mistica.compose.theme.brand.TuBrand import com.telefonica.mistica.compose.theme.brand.VivoBrand import com.telefonica.mistica.compose.theme.brand.VivoNewBrand -class ComponentCatalogActivity : FragmentActivity() { +class ComponentCatalogActivity : AppCompatActivity() { private lateinit var binding: ScreenComponentCatalogBinding diff --git a/library/src/main/java/com/telefonica/mistica/sheet/Sheet.kt b/library/src/main/java/com/telefonica/mistica/sheet/Sheet.kt index c3f311fed..f69eee346 100644 --- a/library/src/main/java/com/telefonica/mistica/sheet/Sheet.kt +++ b/library/src/main/java/com/telefonica/mistica/sheet/Sheet.kt @@ -10,6 +10,7 @@ import android.widget.LinearLayout import android.widget.Space import android.widget.TextView import androidx.coordinatorlayout.widget.CoordinatorLayout +import androidx.core.view.ViewCompat import androidx.lifecycle.LifecycleOwner import androidx.lifecycle.ViewModelStoreOwner import androidx.lifecycle.setViewTreeLifecycleOwner @@ -49,6 +50,8 @@ open class SheetView( } val root = View.inflate(getContext(), R.layout.sheet_layout, null) + /* In case no accessibility pane title is specified, Talkback reads twice first element in Bottom Sheet */ + ViewCompat.setAccessibilityPaneTitle(root, " ") setContentView(root) setUpBehavior(root) fillData(root, sheetModel, context, onSheetTappedWrapped) @@ -86,6 +89,7 @@ open class SheetView( root: View, sheetModel: SheetModel, ) { + val handler = root.findViewById(R.id.handler) val title = root.findViewById(R.id.title) val subtitle = root.findViewById(R.id.subtitle) val description = root.findViewById(R.id.description) @@ -95,6 +99,7 @@ open class SheetView( val subtitleText = sheetModel.header.subtitle val descriptionText = sheetModel.header.description + handler.setOnClickListener { cancel() } title.setTextOrHide(titleText) titleSpace.setSpaceOrGone(titleText) subtitle.setTextOrHide(subtitleText) diff --git a/library/src/main/res/layout/sheet_layout.xml b/library/src/main/res/layout/sheet_layout.xml index 29b1f4579..eb07ee2fc 100644 --- a/library/src/main/res/layout/sheet_layout.xml +++ b/library/src/main/res/layout/sheet_layout.xml @@ -13,8 +13,10 @@ android:id="@+id/handler" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:layout_marginTop="8dp" - android:importantForAccessibility="no" + android:padding="8dp" + android:contentDescription="@string/close_button_content_description" + android:clickable="true" + android:focusable="true" android:layout_gravity="center" app:srcCompat="@drawable/sheet_handler" /> @@ -24,7 +26,7 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:paddingStart="16dp" - android:paddingTop="20dp" + android:paddingTop="12dp" android:paddingBottom="8dp" tools:ignore="RtlSymmetry" tools:text="Title"