diff --git a/app/src/main/java/com/kunzisoft/keepass/adapters/FileDatabaseHistoryAdapter.kt b/app/src/main/java/com/kunzisoft/keepass/adapters/FileDatabaseHistoryAdapter.kt index dbd35bd34..98b4b7da6 100644 --- a/app/src/main/java/com/kunzisoft/keepass/adapters/FileDatabaseHistoryAdapter.kt +++ b/app/src/main/java/com/kunzisoft/keepass/adapters/FileDatabaseHistoryAdapter.kt @@ -22,16 +22,20 @@ package com.kunzisoft.keepass.adapters import android.content.Context import android.graphics.Color import android.graphics.PorterDuff -import androidx.annotation.ColorInt -import androidx.recyclerview.widget.RecyclerView import android.util.TypedValue -import android.view.* +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup import android.widget.EditText import android.widget.ImageView import android.widget.TextView import android.widget.ViewSwitcher +import androidx.annotation.ColorInt +import androidx.recyclerview.widget.RecyclerView import com.kunzisoft.keepass.R import com.kunzisoft.keepass.model.DatabaseFile +import com.kunzisoft.keepass.view.collapse +import com.kunzisoft.keepass.view.expand class FileDatabaseHistoryAdapter(context: Context) : RecyclerView.Adapter() { @@ -106,8 +110,17 @@ class FileDatabaseHistoryAdapter(context: Context) // Click on information val isExpanded = databaseFile == mExpandedDatabaseFile - //This line hides or shows the layout in question - holder.fileExpandContainer.visibility = if (isExpanded) View.VISIBLE else View.GONE + // Hides or shows info + holder.fileExpandContainer.apply { + if (isExpanded) { + if (visibility != View.VISIBLE) { + visibility = View.VISIBLE + expand(true, resources.getDimensionPixelSize(R.dimen.item_file_info_height)) + } + } else { + collapse(true) + } + } // Save alias modification holder.fileAliasCloseButton.setOnClickListener { diff --git a/app/src/main/java/com/kunzisoft/keepass/view/ViewUtil.kt b/app/src/main/java/com/kunzisoft/keepass/view/ViewUtil.kt index ae64c331e..ee1e06e15 100644 --- a/app/src/main/java/com/kunzisoft/keepass/view/ViewUtil.kt +++ b/app/src/main/java/com/kunzisoft/keepass/view/ViewUtil.kt @@ -28,7 +28,6 @@ import android.text.method.PasswordTransformationMethod import android.view.View import android.view.animation.AccelerateDecelerateInterpolator import android.widget.TextView -import androidx.appcompat.widget.Toolbar import androidx.coordinatorlayout.widget.CoordinatorLayout import androidx.core.view.updatePadding import com.google.android.material.snackbar.Snackbar @@ -74,8 +73,8 @@ fun Snackbar.asError(): Snackbar { return this } -fun Toolbar.collapse(animate: Boolean = true) { - val recordBarHeight = layoutParams.height +fun View.collapse(animate: Boolean = true) { + val recordViewHeight = layoutParams.height val slideAnimator = ValueAnimator.ofInt(height, 0) if (animate) slideAnimator.duration = 300L @@ -83,7 +82,7 @@ fun Toolbar.collapse(animate: Boolean = true) { layoutParams.height = animation.animatedValue as Int if (layoutParams.height <= 1) { visibility = View.GONE - layoutParams.height = recordBarHeight + layoutParams.height = recordViewHeight } requestLayout() } @@ -93,17 +92,19 @@ fun Toolbar.collapse(animate: Boolean = true) { }.start() } -fun Toolbar.expand(animate: Boolean = true) { - val actionBarHeight = layoutParams.height +fun View.expand(animate: Boolean = true, defaultHeight: Int? = null) { + val viewHeight = defaultHeight ?: layoutParams.height layoutParams.height = 0 val slideAnimator = ValueAnimator - .ofInt(0, actionBarHeight) + .ofInt(0, viewHeight) if (animate) slideAnimator.duration = 300L + var alreadyVisible = false slideAnimator.addUpdateListener { animation -> layoutParams.height = animation.animatedValue as Int - if (layoutParams.height >= 1) { + if (!alreadyVisible && layoutParams.height >= 1) { visibility = View.VISIBLE + alreadyVisible = true } requestLayout() } diff --git a/app/src/main/res/layout/item_file_row.xml b/app/src/main/res/layout/item_file_row.xml index d5ac85cc3..8eca6c104 100644 --- a/app/src/main/res/layout/item_file_row.xml +++ b/app/src/main/res/layout/item_file_row.xml @@ -125,7 +125,7 @@ android:id="@+id/file_expand_container" android:orientation="vertical" android:layout_width="match_parent" - android:layout_height="wrap_content" + android:layout_height="@dimen/item_file_info_height" android:background="?attr/colorPrimaryDark" app:layout_constraintTop_toBottomOf="@+id/file_main_switcher"> @@ -146,7 +146,7 @@ android:textIsSelectable="true" android:layout_width="0dp" android:layout_height="wrap_content" - android:minHeight="48dp" + android:minHeight="68dp" android:padding="12dp" app:layout_constraintTop_toTopOf="parent" app:layout_constraintStart_toEndOf="@+id/file_modify_button" @@ -160,6 +160,7 @@ android:layout_width="0dp" android:layout_height="wrap_content" app:layout_constraintTop_toBottomOf="@+id/file_path" + app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintStart_toEndOf="@+id/file_modify_button" app:layout_constraintEnd_toEndOf="parent"> diff --git a/app/src/main/res/values/dimens.xml b/app/src/main/res/values/dimens.xml index e10c7e47e..4aca3d0d8 100644 --- a/app/src/main/res/values/dimens.xml +++ b/app/src/main/res/values/dimens.xml @@ -25,14 +25,11 @@ 12dp 14dp 10dp - + 120dp 32dp 48dp 0dp - 1 - 160dp - 320 \ No newline at end of file