diff --git a/app/src/main/java/com/kunzisoft/keepass/view/EntryEditContentsView.kt b/app/src/main/java/com/kunzisoft/keepass/view/EntryEditContentsView.kt index 1f569a46a..5b7e7d71a 100644 --- a/app/src/main/java/com/kunzisoft/keepass/view/EntryEditContentsView.kt +++ b/app/src/main/java/com/kunzisoft/keepass/view/EntryEditContentsView.kt @@ -85,12 +85,23 @@ class EntryEditContentsView @JvmOverloads constructor(context: Context, entryExpiresCheckBox = findViewById(R.id.entry_edit_expires_checkbox) entryExpiresTextView = findViewById(R.id.entry_edit_expires_text) entryNotesView = findViewById(R.id.entry_edit_notes) - entryExtraFieldsContainer = findViewById(R.id.entry_edit_advanced_container) + entryExtraFieldsContainer = findViewById(R.id.entry_edit_extra_fields_container) entryExpiresCheckBox.setOnCheckedChangeListener { _, _ -> assignExpiresDateText() } + entryExtraFieldsContainer.setOnHierarchyChangeListener(object: OnHierarchyChangeListener { + override fun onChildViewRemoved(parent: View?, child: View?) {} + + override fun onChildViewAdded(parent: View?, child: View?) { + parent?.let { + if ((parent as ViewGroup).childCount == 1) + parent.expand() + } + } + }) + // Retrieve the textColor to tint the icon val taIconColor = context.theme.obtainStyledAttributes(intArrayOf(android.R.attr.textColor)) iconColor = taIconColor.getColor(0, Color.WHITE) @@ -235,23 +246,9 @@ class EntryEditContentsView @JvmOverloads constructor(context: Context, if (extraFieldView == null) { extraFieldView = EntryEditExtraField(context) extraFieldView.setFontVisibility(fontInVisibility) - extraFieldView.setDeleteButtonClickListener(OnClickListener { - try { - extraFieldView.collapse(true) { - entryExtraFieldsContainer.apply { - removeView(this) - invalidate() - } - extraFieldView.setDeleteButtonClickListener(null) - } - } catch (e: ClassCastException) { - Log.e(javaClass.name, "Unable to delete view", e) - } - }) // No need animation because of scroll entryExtraFieldsContainer.apply { addView(extraFieldView) - invalidate() } } extraFieldView.customField = customField diff --git a/app/src/main/java/com/kunzisoft/keepass/view/EntryEditExtraField.kt b/app/src/main/java/com/kunzisoft/keepass/view/EntryEditExtraField.kt index e0cfb46dd..4be75991c 100644 --- a/app/src/main/java/com/kunzisoft/keepass/view/EntryEditExtraField.kt +++ b/app/src/main/java/com/kunzisoft/keepass/view/EntryEditExtraField.kt @@ -24,6 +24,7 @@ import android.graphics.Rect import android.util.AttributeSet import android.view.LayoutInflater import android.view.View +import android.view.ViewGroup import android.view.inputmethod.EditorInfo import android.widget.EditText import android.widget.RelativeLayout @@ -72,10 +73,13 @@ class EntryEditExtraField @JvmOverloads constructor(context: Context, deleteButton = findViewById(R.id.entry_extra_field_delete) mValueViewInputType = valueView.inputType - } - - fun setDeleteButtonClickListener(listener: OnClickListener?) { - deleteButton.setOnClickListener(listener) + deleteButton.setOnClickListener { + collapse(true) { + (parent as ViewGroup?)?.apply { + removeView(this@EntryEditExtraField) + } + } + } } /** diff --git a/app/src/main/res/layout/view_entry_edit_contents.xml b/app/src/main/res/layout/view_entry_edit_contents.xml index 9b201afe1..192c4cec0 100644 --- a/app/src/main/res/layout/view_entry_edit_contents.xml +++ b/app/src/main/res/layout/view_entry_edit_contents.xml @@ -199,6 +199,7 @@ + \ No newline at end of file