Hide tabs fragments when keyboard is visible to gain some space

This commit is contained in:
Sylvain Berfini 2021-07-15 14:48:04 +02:00
parent a9daf53d69
commit 83a823152e
2 changed files with 13 additions and 0 deletions

View file

@ -30,6 +30,8 @@ import android.view.Gravity
import android.view.MotionEvent import android.view.MotionEvent
import android.view.View import android.view.View
import android.view.inputmethod.InputMethodManager import android.view.inputmethod.InputMethodManager
import androidx.core.view.ViewCompat
import androidx.core.view.WindowInsetsCompat
import androidx.databinding.DataBindingUtil import androidx.databinding.DataBindingUtil
import androidx.fragment.app.FragmentContainerView import androidx.fragment.app.FragmentContainerView
import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.ViewModelProvider
@ -174,6 +176,16 @@ class MainActivity : GenericActivity(), SnackBarActivity, NavController.OnDestin
registerComponentCallbacks(componentCallbacks) registerComponentCallbacks(componentCallbacks)
findNavController(R.id.nav_host_fragment).addOnDestinationChangedListener(this) findNavController(R.id.nav_host_fragment).addOnDestinationChangedListener(this)
binding.rootCoordinatorLayout.viewTreeObserver.addOnGlobalLayoutListener {
val keyboardVisible = ViewCompat.getRootWindowInsets(binding.rootCoordinatorLayout)?.isVisible(WindowInsetsCompat.Type.ime()) == true
Log.d("[Tabs Fragment] Keyboard is ${if (keyboardVisible) "visible" else "invisible"}")
if (keyboardVisible) {
hideTabsFragment()
} else {
showTabsFragment()
}
}
if (intent != null) handleIntentParams(intent) if (intent != null) handleIntentParams(intent)
} }

View file

@ -13,6 +13,7 @@
</data> </data>
<androidx.coordinatorlayout.widget.CoordinatorLayout <androidx.coordinatorlayout.widget.CoordinatorLayout
android:id="@+id/root_coordinator_layout"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent"> android:layout_height="match_parent">