From ce73cba979618d55dbea1f26dad42953a7841940 Mon Sep 17 00:00:00 2001 From: Haijie Hong Date: Wed, 19 Mar 2025 19:27:00 +0800 Subject: [PATCH] Scroll to top when opening more settings page Test: local tested Flag: EXEMPT minor fix Bug: 343317785 Change-Id: I5e90e4b1b3bcd5329c6574655ad6a3dee537438c --- .../ui/view/DeviceDetailsFragmentFormatter.kt | 18 ++++++++++++++++++ .../view/DeviceDetailsFragmentFormatterTest.kt | 2 +- 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/src/com/android/settings/bluetooth/ui/view/DeviceDetailsFragmentFormatter.kt b/src/com/android/settings/bluetooth/ui/view/DeviceDetailsFragmentFormatter.kt index 06e18f111af..d25dca4415a 100644 --- a/src/com/android/settings/bluetooth/ui/view/DeviceDetailsFragmentFormatter.kt +++ b/src/com/android/settings/bluetooth/ui/view/DeviceDetailsFragmentFormatter.kt @@ -26,9 +26,13 @@ import android.os.Bundle import androidx.compose.animation.AnimatedVisibility import androidx.compose.animation.fadeIn import androidx.compose.animation.fadeOut +import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.height import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue import androidx.compose.runtime.remember +import androidx.compose.ui.Modifier +import androidx.compose.ui.unit.dp import androidx.core.graphics.drawable.toDrawable import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.compose.collectAsStateWithLifecycle @@ -227,6 +231,7 @@ class DeviceDetailsFragmentFormatterImpl( dashboardFragment.lifecycleScope.launch { if (isLoading) { + scrollToTop() dashboardFragment.setLoading(false, false) isLoading = false } @@ -493,6 +498,19 @@ class DeviceDetailsFragmentFormatterImpl( } } + private fun scrollToTop() { + // Temporary fix to make sure the screen is scroll to the top when rendering. + ComposePreference(context).apply { + order = -1 + isEnabled = false + isSelectable = false + setContent { Spacer(modifier = Modifier.height(1.dp)) } + }.also { + dashboardFragment.preferenceScreen.addPreference(it) + dashboardFragment.scrollToPreference(it) + } + } + private fun getPreferenceKey(settingId: Int) = "DEVICE_SETTING_${settingId}" private class SpotlightPreference(context: Context) : Preference(context) { diff --git a/tests/robotests/src/com/android/settings/bluetooth/ui/view/DeviceDetailsFragmentFormatterTest.kt b/tests/robotests/src/com/android/settings/bluetooth/ui/view/DeviceDetailsFragmentFormatterTest.kt index 1eb15e50f62..d31e4317624 100644 --- a/tests/robotests/src/com/android/settings/bluetooth/ui/view/DeviceDetailsFragmentFormatterTest.kt +++ b/tests/robotests/src/com/android/settings/bluetooth/ui/view/DeviceDetailsFragmentFormatterTest.kt @@ -404,7 +404,7 @@ class DeviceDetailsFragmentFormatterTest { for (i in 0..