I use immersive-sticky mode to hide the navigation bar and action bar:
@TargetApi(19)
private void setImmersiveMode() {
if (Build.VERSION.SDK_INT >= 1
I know this is super late, but I finally found a solution to this here:
Just call this on your spinner before using it:
import android.widget.PopupWindow
import android.widget.Spinner
fun Spinner.avoidDropdownFocus() {
try {
val isAppCompat = this is androidx.appcompat.widget.AppCompatSpinner
val spinnerClass = if (isAppCompat) androidx.appcompat.widget.AppCompatSpinner::class.java else Spinner::class.java
val popupWindowClass = if (isAppCompat) androidx.appcompat.widget.ListPopupWindow::class.java else android.widget.ListPopupWindow::class.java
val listPopup = spinnerClass
.getDeclaredField("mPopup")
.apply { isAccessible = true }
.get(this)
if (popupWindowClass.isInstance(listPopup)) {
val popup = popupWindowClass
.getDeclaredField("mPopup")
.apply { isAccessible = true }
.get(listPopup)
if (popup is PopupWindow) {
popup.isFocusable = false
}
}
} catch (e: Exception) {
e.printStackTrace()
}
}