From 1389ddbfc057b0c654f1023851a5ade3ed959113 Mon Sep 17 00:00:00 2001 From: azuo Date: Mon, 13 Sep 2021 11:55:29 +0800 Subject: [PATCH] Avoid the initial vertical position of BottomSheetDialogs being capped. --- .../components/BottomSheetColorPicker.kt | 5 ++++- .../components/BottomSheetMenu.kt | 4 ++++ .../components/BottomSheetPicker.kt | 5 ++++- .../BottomSheetWeatherProviderSettings.kt | 4 ++++ .../components/CustomNotesDialog.kt | 4 ++++ .../components/GlanceSettingsDialog.kt | 4 ++++ .../components/IconPackSelector.kt | 4 ++++ .../components/MaterialBottomSheetDialog.kt | 4 ++++ .../ui/fragments/tabs/ClockFragment.kt | 19 +++++++++---------- 9 files changed, 41 insertions(+), 12 deletions(-) diff --git a/app/src/main/java/com/tommasoberlose/anotherwidget/components/BottomSheetColorPicker.kt b/app/src/main/java/com/tommasoberlose/anotherwidget/components/BottomSheetColorPicker.kt index 26570f3..e11eb1d 100644 --- a/app/src/main/java/com/tommasoberlose/anotherwidget/components/BottomSheetColorPicker.kt +++ b/app/src/main/java/com/tommasoberlose/anotherwidget/components/BottomSheetColorPicker.kt @@ -143,7 +143,6 @@ class BottomSheetColorPicker( withContext(Dispatchers.Main) { binding.loader.isVisible = false binding.listContainer.addView(listBinding.root) - this@BottomSheetColorPicker.behavior.state = BottomSheetBehavior.STATE_EXPANDED binding.listContainer.isVisible = true val idx = colors.toList().indexOf(getSelected?.invoke()) @@ -152,6 +151,10 @@ class BottomSheetColorPicker( }) setContentView(binding.root) + behavior.run { + skipCollapsed = true + state = BottomSheetBehavior.STATE_EXPANDED + } super.show() } diff --git a/app/src/main/java/com/tommasoberlose/anotherwidget/components/BottomSheetMenu.kt b/app/src/main/java/com/tommasoberlose/anotherwidget/components/BottomSheetMenu.kt index 7d69f30..a986afe 100644 --- a/app/src/main/java/com/tommasoberlose/anotherwidget/components/BottomSheetMenu.kt +++ b/app/src/main/java/com/tommasoberlose/anotherwidget/components/BottomSheetMenu.kt @@ -108,6 +108,10 @@ open class BottomSheetMenu(context: Context, private val header: String? = nu } } setContentView(binding.root) + behavior.run { + skipCollapsed = true + state = com.google.android.material.bottomsheet.BottomSheetBehavior.STATE_EXPANDED + } super.show() } diff --git a/app/src/main/java/com/tommasoberlose/anotherwidget/components/BottomSheetPicker.kt b/app/src/main/java/com/tommasoberlose/anotherwidget/components/BottomSheetPicker.kt index 8c1a358..b3cf7d4 100644 --- a/app/src/main/java/com/tommasoberlose/anotherwidget/components/BottomSheetPicker.kt +++ b/app/src/main/java/com/tommasoberlose/anotherwidget/components/BottomSheetPicker.kt @@ -86,7 +86,6 @@ class BottomSheetPicker( withContext(Dispatchers.Main) { binding.loader.isVisible = false binding.listContainer.addView(listBinding.root) - this@BottomSheetPicker.behavior.state = BottomSheetBehavior.STATE_EXPANDED binding.listContainer.isVisible = true val idx = items.toList().indexOfFirst { it.value == getSelected?.invoke() } @@ -95,6 +94,10 @@ class BottomSheetPicker( }) setContentView(binding.root) + behavior.run { + skipCollapsed = true + state = BottomSheetBehavior.STATE_EXPANDED + } super.show() } diff --git a/app/src/main/java/com/tommasoberlose/anotherwidget/components/BottomSheetWeatherProviderSettings.kt b/app/src/main/java/com/tommasoberlose/anotherwidget/components/BottomSheetWeatherProviderSettings.kt index 86b4e70..cf5863c 100644 --- a/app/src/main/java/com/tommasoberlose/anotherwidget/components/BottomSheetWeatherProviderSettings.kt +++ b/app/src/main/java/com/tommasoberlose/anotherwidget/components/BottomSheetWeatherProviderSettings.kt @@ -61,5 +61,9 @@ class BottomSheetWeatherProviderSettings(context: Context, callback: () -> Unit) } setContentView(binding.root) + behavior.run { + skipCollapsed = true + state = com.google.android.material.bottomsheet.BottomSheetBehavior.STATE_EXPANDED + } } } \ No newline at end of file diff --git a/app/src/main/java/com/tommasoberlose/anotherwidget/components/CustomNotesDialog.kt b/app/src/main/java/com/tommasoberlose/anotherwidget/components/CustomNotesDialog.kt index 60e7f2c..924655a 100644 --- a/app/src/main/java/com/tommasoberlose/anotherwidget/components/CustomNotesDialog.kt +++ b/app/src/main/java/com/tommasoberlose/anotherwidget/components/CustomNotesDialog.kt @@ -26,5 +26,9 @@ class CustomNotesDialog(context: Context, callback: (() -> Unit)?) : BottomSheet binding.notes.requestFocus() setContentView(binding.root) + behavior.run { + skipCollapsed = true + state = com.google.android.material.bottomsheet.BottomSheetBehavior.STATE_EXPANDED + } } } \ No newline at end of file diff --git a/app/src/main/java/com/tommasoberlose/anotherwidget/components/GlanceSettingsDialog.kt b/app/src/main/java/com/tommasoberlose/anotherwidget/components/GlanceSettingsDialog.kt index 628c088..be6af9a 100644 --- a/app/src/main/java/com/tommasoberlose/anotherwidget/components/GlanceSettingsDialog.kt +++ b/app/src/main/java/com/tommasoberlose/anotherwidget/components/GlanceSettingsDialog.kt @@ -217,6 +217,10 @@ class GlanceSettingsDialog(val context: Activity, val provider: Constants.Glance } setContentView(binding.root) + behavior.run { + skipCollapsed = true + state = com.google.android.material.bottomsheet.BottomSheetBehavior.STATE_EXPANDED + } super.show() } diff --git a/app/src/main/java/com/tommasoberlose/anotherwidget/components/IconPackSelector.kt b/app/src/main/java/com/tommasoberlose/anotherwidget/components/IconPackSelector.kt index 476cc0c..a76a826 100644 --- a/app/src/main/java/com/tommasoberlose/anotherwidget/components/IconPackSelector.kt +++ b/app/src/main/java/com/tommasoberlose/anotherwidget/components/IconPackSelector.kt @@ -50,6 +50,10 @@ class IconPackSelector(context: Context, private val header: String? = null) : B binding.menu.addView(itemBinding.root) } setContentView(binding.root) + behavior.run { + skipCollapsed = true + state = com.google.android.material.bottomsheet.BottomSheetBehavior.STATE_EXPANDED + } super.show() } } \ No newline at end of file diff --git a/app/src/main/java/com/tommasoberlose/anotherwidget/components/MaterialBottomSheetDialog.kt b/app/src/main/java/com/tommasoberlose/anotherwidget/components/MaterialBottomSheetDialog.kt index 262e8e8..eeb60af 100644 --- a/app/src/main/java/com/tommasoberlose/anotherwidget/components/MaterialBottomSheetDialog.kt +++ b/app/src/main/java/com/tommasoberlose/anotherwidget/components/MaterialBottomSheetDialog.kt @@ -57,6 +57,10 @@ class MaterialBottomSheetDialog( } setContentView(binding.root) + behavior.run { + skipCollapsed = true + state = com.google.android.material.bottomsheet.BottomSheetBehavior.STATE_EXPANDED + } super.show() } diff --git a/app/src/main/java/com/tommasoberlose/anotherwidget/ui/fragments/tabs/ClockFragment.kt b/app/src/main/java/com/tommasoberlose/anotherwidget/ui/fragments/tabs/ClockFragment.kt index dab9185..57720c4 100644 --- a/app/src/main/java/com/tommasoberlose/anotherwidget/ui/fragments/tabs/ClockFragment.kt +++ b/app/src/main/java/com/tommasoberlose/anotherwidget/ui/fragments/tabs/ClockFragment.kt @@ -17,7 +17,7 @@ import com.chibatching.kotpref.bulk import com.google.android.material.transition.MaterialSharedAxis import com.tommasoberlose.anotherwidget.R import com.tommasoberlose.anotherwidget.components.BottomSheetColorPicker -import com.tommasoberlose.anotherwidget.components.BottomSheetMenu +import com.tommasoberlose.anotherwidget.components.BottomSheetPicker import com.tommasoberlose.anotherwidget.databinding.FragmentTabClockBinding import com.tommasoberlose.anotherwidget.global.Constants import com.tommasoberlose.anotherwidget.global.Preferences @@ -144,16 +144,15 @@ class ClockFragment : Fragment() { private fun setupListener() { binding.actionClockTextSize.setOnClickListener { - val dialog = BottomSheetMenu( + BottomSheetPicker( requireContext(), - header = getString(R.string.settings_clock_text_size_title) - ).setSelectedValue(Preferences.clockTextSize) - (46 downTo 12).filter { it % 2 == 0 }.forEach { - dialog.addItem("${it}sp", it.toFloat()) - } - dialog.addOnSelectItemListener { value -> - Preferences.clockTextSize = value - }.show() + items = (46 downTo 12).map { BottomSheetPicker.MenuItem("${it}sp", it.toFloat()) }, + getSelected = { Preferences.clockTextSize }, + header = getString(R.string.settings_clock_text_size_title), + onItemSelected = {value -> + if (value != null) Preferences.clockTextSize = value + } + ).show() } binding.actionAltTimezoneClock.setOnClickListener {