Browse Source

ui: wizard: Resize activity root view with IME

...and hide the IME whenever we switch between the fragments.
Peter Cai 1 year ago
parent
commit
de3ae19a10

+ 13 - 0
app-common/src/main/java/im/angry/openeuicc/ui/wizard/DownloadWizardActivity.kt

@@ -2,6 +2,7 @@ package im.angry.openeuicc.ui.wizard
 
 
 import android.os.Bundle
 import android.os.Bundle
 import android.view.View
 import android.view.View
+import android.view.inputmethod.InputMethodManager
 import android.widget.Button
 import android.widget.Button
 import android.widget.ProgressBar
 import android.widget.ProgressBar
 import androidx.activity.OnBackPressedCallback
 import androidx.activity.OnBackPressedCallback
@@ -84,6 +85,7 @@ class DownloadWizardActivity: BaseEuiccAccessActivity() {
             val bars = insets.getInsets(
             val bars = insets.getInsets(
                 WindowInsetsCompat.Type.systemBars()
                 WindowInsetsCompat.Type.systemBars()
                         or WindowInsetsCompat.Type.displayCutout()
                         or WindowInsetsCompat.Type.displayCutout()
+                        or WindowInsetsCompat.Type.ime()
             )
             )
             v.updatePadding(bars.left, 0, bars.right, bars.bottom)
             v.updatePadding(bars.left, 0, bars.right, bars.bottom)
             val newParams = navigation.layoutParams
             val newParams = navigation.layoutParams
@@ -132,6 +134,8 @@ class DownloadWizardActivity: BaseEuiccAccessActivity() {
     }
     }
 
 
     private fun onPrevPressed() {
     private fun onPrevPressed() {
+        hideIme()
+
         if (currentFragment?.hasPrev == true) {
         if (currentFragment?.hasPrev == true) {
             val prevFrag = currentFragment?.createPrevFragment()
             val prevFrag = currentFragment?.createPrevFragment()
             if (prevFrag == null) {
             if (prevFrag == null) {
@@ -143,6 +147,8 @@ class DownloadWizardActivity: BaseEuiccAccessActivity() {
     }
     }
 
 
     private fun onNextPressed() {
     private fun onNextPressed() {
+        hideIme()
+
         if (currentFragment?.hasNext == true) {
         if (currentFragment?.hasNext == true) {
             currentFragment?.beforeNext()
             currentFragment?.beforeNext()
             val nextFrag = currentFragment?.createNextFragment()
             val nextFrag = currentFragment?.createNextFragment()
@@ -192,6 +198,13 @@ class DownloadWizardActivity: BaseEuiccAccessActivity() {
         }
         }
     }
     }
 
 
+    private fun hideIme() {
+        currentFocus?.let {
+            val imm = getSystemService(InputMethodManager::class.java)
+            imm.hideSoftInputFromWindow(it.windowToken, 0)
+        }
+    }
+
     abstract class DownloadWizardStepFragment : Fragment(), OpenEuiccContextMarker {
     abstract class DownloadWizardStepFragment : Fragment(), OpenEuiccContextMarker {
         protected val state: DownloadWizardState
         protected val state: DownloadWizardState
             get() = (requireActivity() as DownloadWizardActivity).state
             get() = (requireActivity() as DownloadWizardActivity).state