diff --git a/android/android-base/src/main/java/org/isoron/androidbase/utils/InterfaceUtils.kt b/android/android-base/src/main/java/org/isoron/androidbase/utils/InterfaceUtils.kt index 6ce0abae8..7e00ba27c 100644 --- a/android/android-base/src/main/java/org/isoron/androidbase/utils/InterfaceUtils.kt +++ b/android/android-base/src/main/java/org/isoron/androidbase/utils/InterfaceUtils.kt @@ -22,6 +22,7 @@ import android.content.* import android.graphics.* import android.util.* import android.view.* +import android.view.inputmethod.* import android.widget.* import android.widget.TextView.* import androidx.core.view.* @@ -82,4 +83,16 @@ object InterfaceUtils { return ViewCompat.getLayoutDirection(view!!) == ViewCompat.LAYOUT_DIRECTION_RTL } +} + +fun Context.getInputManager() = + this.getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager + +fun Context.showKeyboard() { + this.getInputManager().toggleSoftInput(InputMethodManager.SHOW_FORCED, + InputMethodManager.HIDE_IMPLICIT_ONLY) +} + +fun Context.hideKeyboard() { + this.getInputManager().toggleSoftInput(InputMethodManager.HIDE_IMPLICIT_ONLY, 0) } \ No newline at end of file diff --git a/android/uhabits-android/src/main/java/org/isoron/uhabits/activities/common/dialogs/NumberPickerFactory.kt b/android/uhabits-android/src/main/java/org/isoron/uhabits/activities/common/dialogs/NumberPickerFactory.kt index d50907100..71d32f349 100644 --- a/android/uhabits-android/src/main/java/org/isoron/uhabits/activities/common/dialogs/NumberPickerFactory.kt +++ b/android/uhabits-android/src/main/java/org/isoron/uhabits/activities/common/dialogs/NumberPickerFactory.kt @@ -20,12 +20,11 @@ package org.isoron.uhabits.activities.common.dialogs import android.content.* -import androidx.appcompat.app.* import android.text.* import android.view.* -import android.view.WindowManager.LayoutParams.* import android.view.inputmethod.* import android.widget.* +import androidx.appcompat.app.* import org.isoron.androidbase.activities.* import org.isoron.androidbase.utils.* import org.isoron.uhabits.* @@ -70,14 +69,16 @@ class NumberPickerFactory val v = picker.value + 0.05 * picker2.value callback.onNumberPicked(v) } - .setOnDismissListener{ - callback.onNumberPickerDismissed() - } .create() dialog.setOnShowListener { picker.getChildAt(0)?.requestFocus() - dialog.window?.setSoftInputMode(SOFT_INPUT_STATE_ALWAYS_VISIBLE) + context.showKeyboard() + } + + dialog.setOnDismissListener { + context.hideKeyboard() + callback.onNumberPickerDismissed() } InterfaceUtils.setupEditorAction(picker, TextView.OnEditorActionListener { _, actionId, _ ->