From 9f5b8bec99d7ab645e5c6581cab37aa223c48584 Mon Sep 17 00:00:00 2001 From: Nikita Obrekht Date: Tue, 26 Dec 2023 17:27:05 +0200 Subject: [PATCH] Apply bottom insets on sign up and login screens --- app/src/main/AndroidManifest.xml | 3 ++- .../coffeeshops/auth/ui/login/LoginFragment.kt | 15 +++++++++++++++ .../coffeeshops/auth/ui/signup/SignUpFragment.kt | 15 +++++++++++++++ 3 files changed, 32 insertions(+), 1 deletion(-) diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index b95ddb0..772c2d5 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -22,7 +22,8 @@ + android:theme="@style/Theme.CoffeeShops" + android:windowSoftInputMode="adjustResize"> diff --git a/app/src/main/java/com/obrekht/coffeeshops/auth/ui/login/LoginFragment.kt b/app/src/main/java/com/obrekht/coffeeshops/auth/ui/login/LoginFragment.kt index 1a2a9ef..6c3001d 100644 --- a/app/src/main/java/com/obrekht/coffeeshops/auth/ui/login/LoginFragment.kt +++ b/app/src/main/java/com/obrekht/coffeeshops/auth/ui/login/LoginFragment.kt @@ -2,8 +2,11 @@ package com.obrekht.coffeeshops.auth.ui.login import android.os.Bundle import android.view.View +import android.view.ViewGroup import android.view.inputmethod.EditorInfo import androidx.annotation.StringRes +import androidx.core.view.WindowInsetsCompat +import androidx.core.view.updateLayoutParams import androidx.fragment.app.Fragment import androidx.fragment.app.viewModels import androidx.lifecycle.Lifecycle @@ -13,6 +16,7 @@ import androidx.navigation.fragment.findNavController import com.google.android.material.snackbar.Snackbar import com.obrekht.coffeeshops.NavMainDirections import com.obrekht.coffeeshops.R +import com.obrekht.coffeeshops.app.utils.setOnApplyWindowInsetsListener import com.obrekht.coffeeshops.databinding.FragmentLoginBinding import dagger.hilt.android.AndroidEntryPoint import kotlinx.coroutines.launch @@ -28,6 +32,17 @@ class LoginFragment : Fragment(R.layout.fragment_login) { override fun onViewCreated(view: View, savedInstanceState: Bundle?) { _binding = FragmentLoginBinding.bind(view) + view.setOnApplyWindowInsetsListener { _, windowInsets, _, _ -> + val insets = windowInsets.getInsets( + WindowInsetsCompat.Type.ime() or WindowInsetsCompat.Type.systemBars() + ) + view.updateLayoutParams { + bottomMargin = insets.bottom + } + + windowInsets + } + with(binding) { buttonLogin.setOnClickListener { logIn() diff --git a/app/src/main/java/com/obrekht/coffeeshops/auth/ui/signup/SignUpFragment.kt b/app/src/main/java/com/obrekht/coffeeshops/auth/ui/signup/SignUpFragment.kt index 5f25fc3..20163e7 100644 --- a/app/src/main/java/com/obrekht/coffeeshops/auth/ui/signup/SignUpFragment.kt +++ b/app/src/main/java/com/obrekht/coffeeshops/auth/ui/signup/SignUpFragment.kt @@ -2,8 +2,11 @@ package com.obrekht.coffeeshops.auth.ui.signup import android.os.Bundle import android.view.View +import android.view.ViewGroup import android.view.inputmethod.EditorInfo import androidx.annotation.StringRes +import androidx.core.view.WindowInsetsCompat +import androidx.core.view.updateLayoutParams import androidx.fragment.app.Fragment import androidx.fragment.app.viewModels import androidx.lifecycle.Lifecycle @@ -13,6 +16,7 @@ import androidx.navigation.fragment.findNavController import com.google.android.material.snackbar.Snackbar import com.obrekht.coffeeshops.NavMainDirections import com.obrekht.coffeeshops.R +import com.obrekht.coffeeshops.app.utils.setOnApplyWindowInsetsListener import com.obrekht.coffeeshops.databinding.FragmentSignUpBinding import dagger.hilt.android.AndroidEntryPoint import kotlinx.coroutines.launch @@ -28,6 +32,17 @@ class SignUpFragment : Fragment(R.layout.fragment_sign_up) { override fun onViewCreated(view: View, savedInstanceState: Bundle?) { _binding = FragmentSignUpBinding.bind(view) + view.setOnApplyWindowInsetsListener { _, windowInsets, _, _ -> + val insets = windowInsets.getInsets( + WindowInsetsCompat.Type.ime() or WindowInsetsCompat.Type.systemBars() + ) + view.updateLayoutParams { + bottomMargin = insets.bottom + } + + windowInsets + } + with(binding) { buttonSignUp.setOnClickListener { signUp()