Browse Source

FileDisplayActivity: fix appbar for fast scroll

Adds padding at the bottom if appbar is not collapsed

Signed-off-by: Álvaro Brey <alvaro.brey@nextcloud.com>
Álvaro Brey 3 years ago
parent
commit
ea4222a1ae

+ 17 - 0
app/src/main/java/com/nextcloud/utils/view/FastScroll.kt

@@ -27,7 +27,9 @@
 
 package com.nextcloud.utils.view
 
+import android.view.ViewGroup
 import androidx.recyclerview.widget.RecyclerView
+import com.google.android.material.appbar.AppBarLayout
 import me.zhanghai.android.fastscroll.FastScroller
 import me.zhanghai.android.fastscroll.FastScrollerBuilder
 
@@ -41,4 +43,19 @@ object FastScroll {
         }
         builder.build()
     }
+
+    @JvmStatic
+    fun fixAppBarForFastScroll(appBarLayout: AppBarLayout, content: ViewGroup) {
+        val contentLayoutInitialPaddingBottom = content.paddingBottom
+        appBarLayout.addOnOffsetChangedListener(
+            AppBarLayout.OnOffsetChangedListener { _, offset ->
+                content.setPadding(
+                    content.paddingLeft,
+                    content.paddingTop,
+                    content.paddingRight,
+                    contentLayoutInitialPaddingBottom + appBarLayout.totalScrollRange + offset
+                )
+            }
+        )
+    }
 }

+ 4 - 1
app/src/main/java/com/owncloud/android/ui/activity/FileDisplayActivity.java

@@ -61,6 +61,7 @@ import com.nextcloud.client.network.ConnectivityService;
 import com.nextcloud.client.preferences.AppPreferences;
 import com.nextcloud.client.utils.IntentUtil;
 import com.nextcloud.java.util.Optional;
+import com.nextcloud.utils.view.FastScroll;
 import com.owncloud.android.MainApp;
 import com.owncloud.android.R;
 import com.owncloud.android.databinding.FilesBinding;
@@ -137,7 +138,6 @@ import androidx.annotation.NonNull;
 import androidx.annotation.VisibleForTesting;
 import androidx.appcompat.app.AlertDialog;
 import androidx.appcompat.widget.SearchView;
-import androidx.coordinatorlayout.widget.CoordinatorLayout;
 import androidx.core.view.MenuItemCompat;
 import androidx.fragment.app.Fragment;
 import androidx.fragment.app.FragmentManager;
@@ -266,6 +266,9 @@ public class FileDisplayActivity extends FileActivity
         mSwitchAccountButton.setOnClickListener(v -> showManageAccountsDialog());
 
 
+        FastScroll.fixAppBarForFastScroll(binding.appbar.appbar, binding.rootLayout);
+
+
         // Init Fragment without UI to retain AsyncTask across configuration changes
         FragmentManager fm = getSupportFragmentManager();
         TaskRetainerFragment taskRetainerFragment =