From fc5e77b01a95b24318ba86bbfeebade075e8c6ea Mon Sep 17 00:00:00 2001 From: johan12345 Date: Sat, 20 Aug 2022 17:33:49 +0200 Subject: [PATCH] Rework EditTextDialog - use MaterialAlertDialog for modern styling - use proper way to move dialog above keyboard - fixes #212 (buttons were not clickable) --- .../java/net/vonforst/evmap/MapsActivity.kt | 2 +- .../java/net/vonforst/evmap/ui/Dialogs.kt | 21 +++++-------------- app/src/main/res/values/styles.xml | 6 ++++++ 3 files changed, 12 insertions(+), 17 deletions(-) diff --git a/app/src/main/java/net/vonforst/evmap/MapsActivity.kt b/app/src/main/java/net/vonforst/evmap/MapsActivity.kt index 0a5ad6fb..67e7b53f 100644 --- a/app/src/main/java/net/vonforst/evmap/MapsActivity.kt +++ b/app/src/main/java/net/vonforst/evmap/MapsActivity.kt @@ -86,7 +86,7 @@ class MapsActivity : AppCompatActivity(), ViewCompat.setOnApplyWindowInsetsListener(navView) { v, insets -> val header = navView.getHeaderView(0) header.setPadding(0, insets.getInsets(WindowInsetsCompat.Type.statusBars()).top, 0, 0) - WindowInsetsCompat.CONSUMED + insets } prefs = PreferenceDataSource(this) diff --git a/app/src/main/java/net/vonforst/evmap/ui/Dialogs.kt b/app/src/main/java/net/vonforst/evmap/ui/Dialogs.kt index 1cb4b934..bdbdc1a3 100644 --- a/app/src/main/java/net/vonforst/evmap/ui/Dialogs.kt +++ b/app/src/main/java/net/vonforst/evmap/ui/Dialogs.kt @@ -2,13 +2,13 @@ package net.vonforst.evmap.ui import android.content.Context import android.content.DialogInterface -import android.view.Gravity import android.view.View +import android.view.WindowManager import android.view.inputmethod.EditorInfo -import android.view.inputmethod.InputMethodManager import android.widget.EditText import android.widget.FrameLayout import androidx.appcompat.app.AlertDialog +import com.google.android.material.dialog.MaterialAlertDialogBuilder private fun dialogEditText(ctx: Context): Pair { val container = FrameLayout(ctx) @@ -24,30 +24,19 @@ private fun dialogEditText(ctx: Context): Pair { fun showEditTextDialog( ctx: Context, - customize: (AlertDialog.Builder, EditText) -> Unit + customize: (MaterialAlertDialogBuilder, EditText) -> Unit ): AlertDialog { val (container, input) = dialogEditText(ctx) - val dialogBuilder = AlertDialog.Builder(ctx) + val dialogBuilder = MaterialAlertDialogBuilder(ctx) .setView(container) customize(dialogBuilder, input) val dialog = dialogBuilder.show() - - - // move dialog to top - val attrs = dialog.window?.attributes?.apply { - gravity = Gravity.TOP - } - dialog.window?.attributes = attrs + dialog.window?.setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE) // focus and show keyboard input.requestFocus() - input.postDelayed({ - val imm = - ctx.getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager - imm.showSoftInput(input, InputMethodManager.SHOW_IMPLICIT) - }, 100) input.setOnEditorActionListener { _, actionId, _ -> if (actionId == EditorInfo.IME_ACTION_DONE) { val text = input.text diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml index 1ac16238..a369b55f 100644 --- a/app/src/main/res/values/styles.xml +++ b/app/src/main/res/values/styles.xml @@ -13,6 +13,7 @@ @color/colorSecondaryDark true @style/AppTheme.Preference + @style/AppTheme.AlertDialog + +