From a7e48fa6d7dc3f73d8728249fe294c230bb2f66c Mon Sep 17 00:00:00 2001 From: Tracy Zhou Date: Tue, 8 Aug 2023 22:55:05 -0700 Subject: [PATCH] Fix nav buttons in task bar disppearing when unfolding from landscape small screen Previously we reuse layout params when we switch to a new layout, but not all of the fields we reuse are reset. Due to the variety of fields we update in different layouts and the fact that it's relatively cheap to instantiate a new layout params object, let's start fresh every time. Fixes: 295057715 Bug: 288311605 Test: put the device to landscape in small screen and then unfold, make sure that the nav buttons show in the task bar Change-Id: I8e600c2553436f563dd4509a83cc46ce47c0114d --- .../taskbar/navbutton/PhoneLandscapeNavLayoutter.kt | 7 +++---- .../taskbar/navbutton/PhonePortraitNavLayoutter.kt | 7 +++---- .../launcher3/taskbar/navbutton/TaskbarNavLayoutter.kt | 7 +++---- 3 files changed, 9 insertions(+), 12 deletions(-) diff --git a/quickstep/src/com/android/launcher3/taskbar/navbutton/PhoneLandscapeNavLayoutter.kt b/quickstep/src/com/android/launcher3/taskbar/navbutton/PhoneLandscapeNavLayoutter.kt index aeec2c635c..2acd5d4eff 100644 --- a/quickstep/src/com/android/launcher3/taskbar/navbutton/PhoneLandscapeNavLayoutter.kt +++ b/quickstep/src/com/android/launcher3/taskbar/navbutton/PhoneLandscapeNavLayoutter.kt @@ -42,16 +42,15 @@ open class PhoneLandscapeNavLayoutter( override fun layoutButtons(dp: DeviceProfile, isContextualButtonShowing: Boolean) { // TODO(b/230395757): Polish pending, this is just to make it usable - val navContainerParams = navButtonContainer.layoutParams as FrameLayout.LayoutParams val endStartMargins = resources.getDimensionPixelSize(R.dimen.taskbar_nav_buttons_size) val taskbarDimensions = DimensionUtils.getTaskbarPhoneDimensions(dp, resources, TaskbarManager.isPhoneMode(dp)) navButtonContainer.removeAllViews() navButtonContainer.orientation = LinearLayout.VERTICAL + val navContainerParams = FrameLayout.LayoutParams( + taskbarDimensions.x, ViewGroup.LayoutParams.MATCH_PARENT) navContainerParams.apply { - width = taskbarDimensions.x - height = ViewGroup.LayoutParams.MATCH_PARENT topMargin = endStartMargins bottomMargin = endStartMargins marginEnd = 0 @@ -64,7 +63,7 @@ open class PhoneLandscapeNavLayoutter( navButtonContainer.addView(backButton) navButtonContainer.layoutParams = navContainerParams - navButtonContainer.gravity = Gravity.CENTER_HORIZONTAL + navButtonContainer.gravity = Gravity.CENTER // Add the spaces in between the nav buttons val spaceInBetween: Int = diff --git a/quickstep/src/com/android/launcher3/taskbar/navbutton/PhonePortraitNavLayoutter.kt b/quickstep/src/com/android/launcher3/taskbar/navbutton/PhonePortraitNavLayoutter.kt index e97e37881c..c76311582d 100644 --- a/quickstep/src/com/android/launcher3/taskbar/navbutton/PhonePortraitNavLayoutter.kt +++ b/quickstep/src/com/android/launcher3/taskbar/navbutton/PhonePortraitNavLayoutter.kt @@ -41,7 +41,6 @@ class PhonePortraitNavLayoutter( override fun layoutButtons(dp: DeviceProfile, isContextualButtonShowing: Boolean) { // TODO(b/230395757): Polish pending, this is just to make it usable - val navContainerParams = navButtonContainer.layoutParams as FrameLayout.LayoutParams val taskbarDimensions = DimensionUtils.getTaskbarPhoneDimensions(dp, resources, TaskbarManager.isPhoneMode(dp)) @@ -51,9 +50,9 @@ class PhonePortraitNavLayoutter( navButtonContainer.removeAllViews() navButtonContainer.orientation = LinearLayout.HORIZONTAL + val navContainerParams = FrameLayout.LayoutParams( + taskbarDimensions.x, ViewGroup.LayoutParams.MATCH_PARENT) navContainerParams.apply { - width = taskbarDimensions.x - height = ViewGroup.LayoutParams.MATCH_PARENT topMargin = 0 bottomMargin = 0 marginEnd = endStartMargins @@ -66,7 +65,7 @@ class PhonePortraitNavLayoutter( navButtonContainer.addView(recentsButton) navButtonContainer.layoutParams = navContainerParams - navButtonContainer.gravity = Gravity.CENTER_VERTICAL + navButtonContainer.gravity = Gravity.CENTER // Add the spaces in between the nav buttons val spaceInBetween = diff --git a/quickstep/src/com/android/launcher3/taskbar/navbutton/TaskbarNavLayoutter.kt b/quickstep/src/com/android/launcher3/taskbar/navbutton/TaskbarNavLayoutter.kt index 5ec7ca0e2e..8332b7dd74 100644 --- a/quickstep/src/com/android/launcher3/taskbar/navbutton/TaskbarNavLayoutter.kt +++ b/quickstep/src/com/android/launcher3/taskbar/navbutton/TaskbarNavLayoutter.kt @@ -40,7 +40,6 @@ class TaskbarNavLayoutter( override fun layoutButtons(dp: DeviceProfile, isContextualButtonShowing: Boolean) { // Add spacing after the end of the last nav button - val navButtonParams = navButtonContainer.layoutParams as FrameLayout.LayoutParams var navMarginEnd = resources.getDimension(dp.inv.inlineNavButtonsEndSpacing).toInt() val contextualWidth = endContextualContainer.width // If contextual buttons are showing, we check if the end margin is enough for the @@ -50,10 +49,10 @@ class TaskbarNavLayoutter( navMarginEnd += resources.getDimensionPixelSize(R.dimen.taskbar_hotseat_nav_spacing) / 2 } + val navButtonParams = FrameLayout.LayoutParams( + FrameLayout.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.MATCH_PARENT) navButtonParams.apply { - gravity = Gravity.END - width = FrameLayout.LayoutParams.WRAP_CONTENT - height = ViewGroup.LayoutParams.MATCH_PARENT + gravity = Gravity.END or Gravity.CENTER_VERTICAL marginEnd = navMarginEnd } navButtonContainer.orientation = LinearLayout.HORIZONTAL