diff --git a/app/src/main/java/de/jrpie/android/launcher/preferences/LauncherPreferences$Config.java b/app/src/main/java/de/jrpie/android/launcher/preferences/LauncherPreferences$Config.java
index 85979fe..4653910 100644
--- a/app/src/main/java/de/jrpie/android/launcher/preferences/LauncherPreferences$Config.java
+++ b/app/src/main/java/de/jrpie/android/launcher/preferences/LauncherPreferences$Config.java
@@ -72,6 +72,7 @@ import eu.jonahbauer.android.preference.annotations.Preferences;
@Preference(name = "search_auto_launch", type = boolean.class, defaultValue = "true"),
@Preference(name = "search_web", type = boolean.class, description = "false"),
@Preference(name = "search_auto_open_keyboard", type = boolean.class, defaultValue = "true"),
+ @Preference(name = "search_auto_close_keyboard", type = boolean.class, defaultValue = "false"),
}),
@PreferenceGroup(name = "enabled_gestures", prefix = "settings_enabled_gestures_", suffix = "_key", value = {
@Preference(name = "double_swipe", type = boolean.class, defaultValue = "true"),
diff --git a/app/src/main/java/de/jrpie/android/launcher/ui/Helper.kt b/app/src/main/java/de/jrpie/android/launcher/ui/Helper.kt
index 1ca4d2b..a863c67 100644
--- a/app/src/main/java/de/jrpie/android/launcher/ui/Helper.kt
+++ b/app/src/main/java/de/jrpie/android/launcher/ui/Helper.kt
@@ -1,5 +1,6 @@
package de.jrpie.android.launcher.ui
+import android.app.Activity
import android.content.Context
import android.graphics.ColorMatrix
import android.graphics.ColorMatrixColorFilter
@@ -38,10 +39,17 @@ fun ImageView.transformGrayscale(grayscale: Boolean) {
}
-// Taken from https://stackoverflow.com/a/50743764/12787264
+// Taken from https://stackoverflow.com/a/50743764
fun View.openSoftKeyboard(context: Context) {
this.requestFocus()
- // open the soft keyboard
- val imm = context.getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager
- imm.showSoftInput(this, InputMethodManager.SHOW_IMPLICIT)
+ (context.getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager)
+ .showSoftInput(this, InputMethodManager.SHOW_IMPLICIT)
}
+
+// https://stackoverflow.com/a/17789187
+fun closeSoftKeyboard(activity: Activity) {
+ activity.currentFocus?.let { focus ->
+ (activity.getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager)
+ .hideSoftInputFromWindow( focus.windowToken, 0 )
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/de/jrpie/android/launcher/ui/list/apps/ListFragmentApps.kt b/app/src/main/java/de/jrpie/android/launcher/ui/list/apps/ListFragmentApps.kt
index 1a55bbb..a8e59ba 100644
--- a/app/src/main/java/de/jrpie/android/launcher/ui/list/apps/ListFragmentApps.kt
+++ b/app/src/main/java/de/jrpie/android/launcher/ui/list/apps/ListFragmentApps.kt
@@ -11,13 +11,16 @@ import android.widget.Toast
import androidx.fragment.app.Fragment
import androidx.recyclerview.widget.GridLayoutManager
import androidx.recyclerview.widget.LinearLayoutManager
+import androidx.recyclerview.widget.RecyclerView
import de.jrpie.android.launcher.R
import de.jrpie.android.launcher.apps.AppFilter
import de.jrpie.android.launcher.databinding.ListAppsBinding
import de.jrpie.android.launcher.preferences.LauncherPreferences
import de.jrpie.android.launcher.ui.UIObject
+import de.jrpie.android.launcher.ui.closeSoftKeyboard
import de.jrpie.android.launcher.ui.list.ListActivity
import de.jrpie.android.launcher.ui.openSoftKeyboard
+import kotlin.math.absoluteValue
/**
@@ -90,6 +93,20 @@ class ListFragmentApps : Fragment(), UIObject {
}
}
adapter = appsRecyclerAdapter
+ if (LauncherPreferences.functionality().searchAutoCloseKeyboard()) {
+ addOnScrollListener(object : RecyclerView.OnScrollListener() {
+ var totalDy: Int = 0
+ var threshold = (resources.displayMetrics.density * 100).toInt()
+ override fun onScrolled(recyclerView: RecyclerView, dx: Int, dy: Int) {
+ totalDy += dy
+
+ if (totalDy.absoluteValue > 100) {
+ totalDy = 0
+ closeSoftKeyboard(requireActivity())
+ }
+ }
+ })
+ }
}
binding.listAppsSearchview.setOnQueryTextListener(object :
diff --git a/app/src/main/res/values/donottranslate.xml b/app/src/main/res/values/donottranslate.xml
index 89ec086..69c7f6a 100644
--- a/app/src/main/res/values/donottranslate.xml
+++ b/app/src/main/res/values/donottranslate.xml
@@ -147,6 +147,7 @@
functionality.search_auto_launch
functionality.search_web
functionality.search_auto_keyboard
+ functionality.search_auto_close_keyboard
settings_action_lock_method
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 21f25f5..ed2bb66 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -167,6 +167,7 @@
Search the web
Press return while searching the app list to launch a web search.
Start keyboard for search
+ Close keyboard when scrolling
Sensitivity
diff --git a/app/src/main/res/xml/preferences.xml b/app/src/main/res/xml/preferences.xml
index 6ef5d07..7d906ff 100644
--- a/app/src/main/res/xml/preferences.xml
+++ b/app/src/main/res/xml/preferences.xml
@@ -104,6 +104,10 @@
android:key="@string/settings_functionality_search_auto_open_keyboard_key"
android:defaultValue="true"
android:title="@string/settings_functionality_auto_keyboard" />
+