Fixes touch targets for several tabs in ThemePicker
Bug: 280729818
Bug: 280547411
Bug: 278662294
Test: Manually with Accessibility Scanner
Change-Id: I31ef31fda89ae2fa7f9ce83240921d914459c49b
diff --git a/res/layout/clock_size_radio_button_group.xml b/res/layout/clock_size_radio_button_group.xml
index 4264007..30e39ad 100644
--- a/res/layout/clock_size_radio_button_group.xml
+++ b/res/layout/clock_size_radio_button_group.xml
@@ -57,6 +57,7 @@
android:id="@+id/button_container_small"
android:layout_width="match_parent"
android:layout_height="wrap_content"
+ android:minHeight="48dp"
android:orientation="horizontal">
<RadioButton
diff --git a/res/values/dimens.xml b/res/values/dimens.xml
index 4392ebf..1ef739b 100644
--- a/res/values/dimens.xml
+++ b/res/values/dimens.xml
@@ -176,4 +176,6 @@
copied from sysui resources
-->
<dimen name="keyguard_large_clock_top_margin">-60dp</dimen>
+
+ <dimen name="tab_touch_delegate_height_padding">8dp</dimen>
</resources>
diff --git a/src/com/android/customization/picker/clock/ui/adapter/ClockSettingsTabAdapter.kt b/src/com/android/customization/picker/clock/ui/adapter/ClockSettingsTabAdapter.kt
index 746fdb3..d0e6f18 100644
--- a/src/com/android/customization/picker/clock/ui/adapter/ClockSettingsTabAdapter.kt
+++ b/src/com/android/customization/picker/clock/ui/adapter/ClockSettingsTabAdapter.kt
@@ -16,13 +16,17 @@
*/
package com.android.customization.picker.clock.ui.adapter
+import android.graphics.Rect
import android.view.LayoutInflater
+import android.view.TouchDelegate
import android.view.View
import android.view.ViewGroup
import android.widget.TextView
import androidx.recyclerview.widget.RecyclerView
import com.android.customization.picker.clock.ui.viewmodel.ClockSettingsTabViewModel
import com.android.wallpaper.R
+import com.android.wallpaper.util.ViewUtils.setupTouchDelegate
+
/** Adapter for the tab recycler view on the clock settings screen. */
class ClockSettingsTabAdapter : RecyclerView.Adapter<ClockSettingsTabAdapter.ViewHolder>() {
@@ -54,6 +58,10 @@
val item = items[position]
holder.itemView.isSelected = item.isSelected
holder.textView.text = item.name
+ holder.textView.setupTouchDelegate(
+ parentView = holder.itemView,
+ heightRes = R.dimen.tab_touch_delegate_height_padding
+ )
holder.textView.setOnClickListener(
if (item.onClicked != null) {
View.OnClickListener { item.onClicked.invoke() }
diff --git a/src/com/android/customization/picker/color/ui/adapter/ColorTypeTabAdapter.kt b/src/com/android/customization/picker/color/ui/adapter/ColorTypeTabAdapter.kt
index bb9f082..ac5ad81 100644
--- a/src/com/android/customization/picker/color/ui/adapter/ColorTypeTabAdapter.kt
+++ b/src/com/android/customization/picker/color/ui/adapter/ColorTypeTabAdapter.kt
@@ -17,13 +17,16 @@
package com.android.customization.picker.color.ui.adapter
+import android.graphics.Rect
import android.view.LayoutInflater
+import android.view.TouchDelegate
import android.view.View
import android.view.ViewGroup
import android.widget.TextView
import androidx.recyclerview.widget.RecyclerView
import com.android.customization.picker.color.ui.viewmodel.ColorTypeTabViewModel
import com.android.wallpaper.R
+import com.android.wallpaper.util.ViewUtils.setupTouchDelegate
/** Adapts between color type items and views. */
class ColorTypeTabAdapter : RecyclerView.Adapter<ColorTypeTabAdapter.ViewHolder>() {
@@ -55,6 +58,10 @@
val item = items[position]
holder.itemView.isSelected = item.isSelected
holder.textView.text = item.name
+ holder.textView.setupTouchDelegate(
+ parentView = holder.itemView,
+ heightRes = R.dimen.tab_touch_delegate_height_padding
+ )
holder.textView.setOnClickListener(
if (item.onClick != null) {
View.OnClickListener { item.onClick.invoke() }
diff --git a/src/com/android/customization/picker/quickaffordance/ui/adapter/SlotTabAdapter.kt b/src/com/android/customization/picker/quickaffordance/ui/adapter/SlotTabAdapter.kt
index 5203ed3..b34ea1b 100644
--- a/src/com/android/customization/picker/quickaffordance/ui/adapter/SlotTabAdapter.kt
+++ b/src/com/android/customization/picker/quickaffordance/ui/adapter/SlotTabAdapter.kt
@@ -17,13 +17,16 @@
package com.android.customization.picker.quickaffordance.ui.adapter
+import android.graphics.Rect
import android.view.LayoutInflater
+import android.view.TouchDelegate
import android.view.View
import android.view.ViewGroup
import android.widget.TextView
import androidx.recyclerview.widget.RecyclerView
import com.android.customization.picker.quickaffordance.ui.viewmodel.KeyguardQuickAffordanceSlotViewModel
import com.android.wallpaper.R
+import com.android.wallpaper.util.ViewUtils.setupTouchDelegate
/** Adapts between lock screen quick affordance slot items and views. */
class SlotTabAdapter : RecyclerView.Adapter<SlotTabAdapter.ViewHolder>() {
@@ -55,6 +58,10 @@
val item = items[position]
holder.itemView.isSelected = item.isSelected
holder.textView.text = item.name
+ holder.textView.setupTouchDelegate(
+ parentView = holder.itemView,
+ heightRes = R.dimen.tab_touch_delegate_height_padding
+ )
holder.textView.setOnClickListener(
if (item.onClicked != null) {
View.OnClickListener { item.onClicked.invoke() }