From 452dd2c86b1dc72fffab251daf90eb5dd2bc81f6 Mon Sep 17 00:00:00 2001 From: Pranav Vashi Date: Mon, 30 Sep 2024 23:17:26 +0530 Subject: [PATCH] Settings: Allow using icon for ComposePreference Signed-off-by: Pranav Vashi --- res/layout/preference_compose.xml | 35 +++++++++++++++++-- .../spa/preference/ComposePreference.kt | 15 +++++++- 2 files changed, 47 insertions(+), 3 deletions(-) diff --git a/res/layout/preference_compose.xml b/res/layout/preference_compose.xml index 14cb2d79b6a..992b8261646 100644 --- a/res/layout/preference_compose.xml +++ b/res/layout/preference_compose.xml @@ -15,7 +15,38 @@ ~ limitations under the License. --> - + android:layout_height="wrap_content" + android:minHeight="?android:attr/listPreferredItemHeightSmall" + android:gravity="center_vertical" + android:paddingStart="?android:attr/listPreferredItemPaddingStart" + android:background="?android:attr/activatedBackgroundIndicator" + android:clipToPadding="false"> + + + + + + + + diff --git a/src/com/android/settings/spa/preference/ComposePreference.kt b/src/com/android/settings/spa/preference/ComposePreference.kt index 81d2b4bceb9..c2d3884972a 100644 --- a/src/com/android/settings/spa/preference/ComposePreference.kt +++ b/src/com/android/settings/spa/preference/ComposePreference.kt @@ -18,6 +18,8 @@ package com.android.settings.spa.preference import android.content.Context import android.util.AttributeSet +import android.view.View +import android.widget.ImageView import androidx.annotation.VisibleForTesting import androidx.compose.runtime.Composable import androidx.compose.ui.platform.ComposeView @@ -68,7 +70,18 @@ constructor( holder.isDividerAllowedAbove = false holder.isDividerAllowedBelow = false - (holder.itemView as ComposeView).apply { + val iconView = holder.findViewById(android.R.id.icon) as? ImageView + iconView?.let { + if (icon != null) { + it.visibility = View.VISIBLE + it.setImageDrawable(icon) + } else { + it.visibility = View.GONE + } + } + + val composeView = holder.findViewById(R.id.compose_view) as? ComposeView + composeView?.apply { setViewCompositionStrategy(ViewCompositionStrategy.DisposeOnViewTreeLifecycleDestroyed) setContent { SettingsTheme {