Переглянути джерело

Shift layout if nav bar exist

Signed-off-by: alperozturk <alper_ozturk@proton.me>
alperozturk 1 рік тому
батько
коміт
0bf031ed0f

+ 36 - 0
app/src/main/java/com/nextcloud/client/editimage/EditImageActivity.kt

@@ -20,6 +20,7 @@
  */
 package com.nextcloud.client.editimage
 
+import android.annotation.SuppressLint
 import android.graphics.Bitmap
 import android.net.Uri
 import android.os.Build
@@ -100,6 +101,41 @@ class EditImageActivity :
         }
 
         setupCropper()
+
+        if (hasNavigationBar()) {
+            shiftLayout()
+        }
+    }
+
+    private fun shiftLayout() {
+        val navBarHeight: Float = getNavigationBarHeight().toFloat()
+
+        @Suppress("MagicNumber")
+        val imageShiftValue = binding.editButtonsLayout.height * 1.4f
+
+        binding.cropImageView.post {
+            binding.cropImageView.translationY = -imageShiftValue
+        }
+        binding.editButtonsLayout.post {
+            binding.editButtonsLayout.translationY = -navBarHeight
+        }
+    }
+
+    @SuppressLint("DiscouragedApi")
+    private fun hasNavigationBar(): Boolean {
+        val id = resources.getIdentifier("config_showNavigationBar", "bool", "android")
+        return id > 0 && resources.getBoolean(id)
+    }
+
+    @SuppressLint("InternalInsetResource", "DiscouragedApi")
+    private fun getNavigationBarHeight(): Int {
+        val resourceId: Int = resources.getIdentifier("navigation_bar_height", "dimen", "android")
+
+        return if (resourceId > 0) {
+            resources.getDimensionPixelSize(resourceId)
+        } else {
+            0
+        }
     }
 
     override fun onCropImageComplete(view: CropImageView, result: CropImageView.CropResult) {

+ 1 - 0
app/src/main/res/layout/activity_edit_image.xml

@@ -45,6 +45,7 @@
         app:layout_constraintTop_toBottomOf="@+id/toolbar" />
 
     <LinearLayout
+        android:id="@+id/edit_buttons_layout"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         android:layout_marginBottom="16dp"