Set the vertical margin of browse_state properly

Fixes: 140263586
Test: manual

Change-Id: Ie1384fd57c539a241b34e5e67e3b45fbc5142179
diff --git a/res/layout/browse_state.xml b/res/layout/browse_state.xml
index 32ab839..ee22cc8 100644
--- a/res/layout/browse_state.xml
+++ b/res/layout/browse_state.xml
@@ -18,6 +18,7 @@
     xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:app="http://schemas.android.com/apk/res-auto"
     xmlns:tools="http://schemas.android.com/tools"
+    android:id="@+id/browse_state"
     android:layout_width="match_parent"
     android:layout_height="match_parent"
     tools:showIn="@layout/fragment_browse">
@@ -41,6 +42,7 @@
         style="@style/ErrorTextStyle"
         android:layout_height="wrap_content"
         android:layout_marginTop="@dimen/browse_state_error_margin_top"
+        app:layout_goneMarginTop="0dp"
         app:layout_constraintTop_toBottomOf="@+id/error_icon"
         app:layout_constraintBottom_toBottomOf="parent"
         app:layout_constraintStart_toStartOf="parent"
diff --git a/src/com/android/car/media/BrowseFragment.java b/src/com/android/car/media/BrowseFragment.java
index 75b6a52..00f2506 100644
--- a/src/com/android/car/media/BrowseFragment.java
+++ b/src/com/android/car/media/BrowseFragment.java
@@ -69,6 +69,7 @@
     private final View mFragmentContent;
 
     private RecyclerView mBrowseList;
+    private ViewGroup mBrowseState;
     private ImageView mErrorIcon;
     private TextView mMessage;
     private BrowseAdapter mBrowseAdapter;
@@ -223,6 +224,7 @@
         mLoadingIndicatorDelay = mFragmentContent.getContext().getResources()
                 .getInteger(R.integer.progress_indicator_delay);
         mBrowseList = mFragmentContent.findViewById(R.id.browse_list);
+        mBrowseState = mFragmentContent.findViewById(R.id.browse_state);
         mErrorIcon = mFragmentContent.findViewById(R.id.error_icon);
         mMessage = mFragmentContent.findViewById(R.id.error_message);
         mFadeDuration = mFragmentContent.getContext().getResources().getInteger(
@@ -339,7 +341,13 @@
                 mBrowseList.getPaddingRight(), mBrowseList.getPaddingBottom());
     }
 
-    void onPlaybackControlsChanged(boolean visible) {
+    void onPlaybackControlsChanged(boolean visible, int browseStateTopMargin,
+            int browseStateBottomMargin) {
+        ViewGroup.MarginLayoutParams params =
+                (ViewGroup.MarginLayoutParams) mBrowseState.getLayoutParams();
+        params.topMargin = browseStateTopMargin;
+        params.bottomMargin = browseStateBottomMargin;
+
         if (mBrowseList == null) {
             return;
         }
diff --git a/src/com/android/car/media/MediaActivity.java b/src/com/android/car/media/MediaActivity.java
index cdda6d9..91716fa 100644
--- a/src/com/android/car/media/MediaActivity.java
+++ b/src/com/android/car/media/MediaActivity.java
@@ -327,8 +327,10 @@
         mAppBarView.setAppLauncherSupported(mAppSelectorIntent != null);
 
         localViewModel.getMiniControlsVisible().observe(this, visible -> {
-            mBrowseFragment.onPlaybackControlsChanged(visible);
-            mSearchFragment.onPlaybackControlsChanged(visible);
+            int topMargin = mAppBarView.getHeight();
+            int bottomMargin = visible ? mMiniPlaybackControls.getHeight() : 0;
+            mBrowseFragment.onPlaybackControlsChanged(visible, topMargin, bottomMargin);
+            mSearchFragment.onPlaybackControlsChanged(visible, topMargin, bottomMargin);
         } );
     }