Browse Source

Merge pull request #13409 from nextcloud/shift-empty-view-for-preview-media-activity

Shift Empty View for Preview Media Activity
Alper Öztürk 8 months ago
parent
commit
45104b5b40

+ 19 - 0
app/src/main/java/com/nextcloud/utils/extensions/ContextExtensions.kt

@@ -16,6 +16,7 @@ import android.os.Build
 import android.os.Handler
 import android.os.Handler
 import android.os.Looper
 import android.os.Looper
 import android.widget.Toast
 import android.widget.Toast
+import com.google.common.io.Resources
 import com.owncloud.android.datamodel.ReceiverFlag
 import com.owncloud.android.datamodel.ReceiverFlag
 
 
 @SuppressLint("UnspecifiedRegisterReceiverFlag")
 @SuppressLint("UnspecifiedRegisterReceiverFlag")
@@ -27,6 +28,24 @@ fun Context.registerBroadcastReceiver(receiver: BroadcastReceiver?, filter: Inte
     }
     }
 }
 }
 
 
+/**
+ *
+ * @return The height of the status bar in pixel.
+ *
+ * @throws Resources.NotFoundException If the resource identifier for `status_bar_height` is not found.
+ *
+ */
+@SuppressLint("DiscouragedApi", "InternalInsetResource")
+fun Context.statusBarHeight(): Int {
+    return try {
+        resources.getDimensionPixelSize(
+            resources.getIdentifier("status_bar_height", "dimen", "android")
+        )
+    } catch (e: android.content.res.Resources.NotFoundException) {
+        0
+    }
+}
+
 fun Context.showToast(message: String) {
 fun Context.showToast(message: String) {
     Handler(Looper.getMainLooper()).post {
     Handler(Looper.getMainLooper()).post {
         Toast.makeText(this, message, Toast.LENGTH_LONG).show()
         Toast.makeText(this, message, Toast.LENGTH_LONG).show()

+ 18 - 0
app/src/main/java/com/owncloud/android/ui/preview/PreviewMediaActivity.kt

@@ -33,6 +33,7 @@ import android.view.MenuItem
 import android.view.View
 import android.view.View
 import android.view.ViewGroup
 import android.view.ViewGroup
 import android.widget.FrameLayout
 import android.widget.FrameLayout
+import android.widget.LinearLayout
 import androidx.annotation.OptIn
 import androidx.annotation.OptIn
 import androidx.annotation.StringRes
 import androidx.annotation.StringRes
 import androidx.appcompat.content.res.AppCompatResources
 import androidx.appcompat.content.res.AppCompatResources
@@ -66,6 +67,7 @@ import com.nextcloud.ui.fileactions.FileActionsBottomSheet.Companion.newInstance
 import com.nextcloud.ui.fileactions.FileActionsBottomSheet.ResultListener
 import com.nextcloud.ui.fileactions.FileActionsBottomSheet.ResultListener
 import com.nextcloud.utils.extensions.getParcelableArgument
 import com.nextcloud.utils.extensions.getParcelableArgument
 import com.nextcloud.utils.extensions.logFileSize
 import com.nextcloud.utils.extensions.logFileSize
+import com.nextcloud.utils.extensions.statusBarHeight
 import com.owncloud.android.R
 import com.owncloud.android.R
 import com.owncloud.android.databinding.ActivityPreviewMediaBinding
 import com.owncloud.android.databinding.ActivityPreviewMediaBinding
 import com.owncloud.android.datamodel.OCFile
 import com.owncloud.android.datamodel.OCFile
@@ -153,6 +155,22 @@ class PreviewMediaActivity :
         configureSystemBars()
         configureSystemBars()
         emptyListView = binding.emptyView.emptyListView
         emptyListView = binding.emptyView.emptyListView
         showProgressLayout()
         showProgressLayout()
+        addMarginForEmptyView()
+    }
+
+    private fun addMarginForEmptyView() {
+        val layoutParams = emptyListView?.layoutParams ?: return
+        val statusBarHeight = statusBarHeight().toFloat()
+        val marginTop = DisplayUtils.convertDpToPixel(statusBarHeight, this)
+        when (layoutParams) {
+            is LinearLayout.LayoutParams -> layoutParams.setMargins(0, marginTop, 0, 0)
+            is FrameLayout.LayoutParams -> layoutParams.setMargins(0, marginTop, 0, 0)
+            else -> {
+                Log_OC.e(TAG, "Unsupported LayoutParams type: ${layoutParams::class.java.simpleName}")
+                return
+            }
+        }
+        emptyListView?.layoutParams = layoutParams
     }
     }
 
 
     private fun registerMediaControlReceiver() {
     private fun registerMediaControlReceiver() {

+ 3 - 1
app/src/main/res/layout/empty_list.xml

@@ -5,7 +5,8 @@
   ~ SPDX-FileCopyrightText: 2016 Andy Scherzinger <info@andy-scherzinger>
   ~ SPDX-FileCopyrightText: 2016 Andy Scherzinger <info@andy-scherzinger>
   ~ SPDX-License-Identifier: AGPL-3.0-or-later OR GPL-2.0-only
   ~ SPDX-License-Identifier: AGPL-3.0-or-later OR GPL-2.0-only
 -->
 -->
-<androidx.core.widget.NestedScrollView xmlns:android="http://schemas.android.com/apk/res/android"
+<androidx.core.widget.NestedScrollView
+    xmlns:android="http://schemas.android.com/apk/res/android"
     android:id="@+id/empty_list_view"
     android:id="@+id/empty_list_view"
     xmlns:app="http://schemas.android.com/apk/res-auto"
     xmlns:app="http://schemas.android.com/apk/res-auto"
     xmlns:tools="http://schemas.android.com/tools"
     xmlns:tools="http://schemas.android.com/tools"
@@ -13,6 +14,7 @@
     android:layout_height="match_parent">
     android:layout_height="match_parent">
 
 
     <LinearLayout
     <LinearLayout
+        android:id="@+id/empty_linear_layout"
         android:layout_width="match_parent"
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
         android:layout_height="wrap_content"
         android:layout_gravity="top"
         android:layout_gravity="top"