diff --git a/Corona-Warn-App/src/main/AndroidManifest.xml b/Corona-Warn-App/src/main/AndroidManifest.xml index f4096417f505743872544dbc4a121528a606f035..5cd5f108e5c5c12e5fea89fa562f936f4859b797 100644 --- a/Corona-Warn-App/src/main/AndroidManifest.xml +++ b/Corona-Warn-App/src/main/AndroidManifest.xml @@ -80,7 +80,8 @@ android:name=".contactdiary.ui.ContactDiaryActivity" android:exported="false" android:screenOrientation="portrait" - android:theme="@style/AppTheme.ContactDiary" /> + android:theme="@style/AppTheme.ContactDiary" + android:windowSoftInputMode="adjustResize|stateAlwaysHidden"/> </application> diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/contactdiary/ui/day/sheets/location/ContactDiaryLocationBottomSheetDialogFragment.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/contactdiary/ui/day/sheets/location/ContactDiaryLocationBottomSheetDialogFragment.kt index ea041c6354cfc40cb437c6f5cc5314cc38141092..884bd20edd2d2902bfe366c7c1d5a69152de14fc 100644 --- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/contactdiary/ui/day/sheets/location/ContactDiaryLocationBottomSheetDialogFragment.kt +++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/contactdiary/ui/day/sheets/location/ContactDiaryLocationBottomSheetDialogFragment.kt @@ -9,6 +9,8 @@ import androidx.core.widget.doAfterTextChanged import androidx.navigation.fragment.navArgs import com.google.android.material.bottomsheet.BottomSheetDialogFragment import de.rki.coronawarnapp.R +import de.rki.coronawarnapp.contactdiary.util.hideKeyboard +import de.rki.coronawarnapp.contactdiary.util.showKeyboard import de.rki.coronawarnapp.databinding.ContactDiaryLocationBottomSheetFragmentBinding import de.rki.coronawarnapp.util.DialogHelper import de.rki.coronawarnapp.util.di.AutoInject @@ -51,7 +53,7 @@ class ContactDiaryLocationBottomSheetDialogFragment : BottomSheetDialogFragment( } } - binding.contactDiaryLocationBottomSheetCloseButton.buttonIcon.setOnClickListener { + binding.contactDiaryLocationBottomSheetCloseButton.setOnClickListener { viewModel.closePressed() } @@ -69,6 +71,8 @@ class ContactDiaryLocationBottomSheetDialogFragment : BottomSheetDialogFragment( } } + binding.contactDiaryLocationBottomSheetTextInputEditText.showKeyboard() + viewModel.shouldClose.observe2(this) { dismiss() } @@ -79,6 +83,11 @@ class ContactDiaryLocationBottomSheetDialogFragment : BottomSheetDialogFragment( } } + override fun onPause() { + super.onPause() + hideKeyboard() + } + override fun onDestroyView() { super.onDestroyView() _binding = null diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/contactdiary/ui/day/sheets/person/ContactDiaryPersonBottomSheetDialogFragment.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/contactdiary/ui/day/sheets/person/ContactDiaryPersonBottomSheetDialogFragment.kt index bed3a793367c7a83c4cebb657301321d129c4358..430306042a161235c171c7f1c5e911e3d39c42eb 100644 --- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/contactdiary/ui/day/sheets/person/ContactDiaryPersonBottomSheetDialogFragment.kt +++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/contactdiary/ui/day/sheets/person/ContactDiaryPersonBottomSheetDialogFragment.kt @@ -9,6 +9,8 @@ import androidx.core.widget.doAfterTextChanged import androidx.navigation.fragment.navArgs import com.google.android.material.bottomsheet.BottomSheetDialogFragment import de.rki.coronawarnapp.R +import de.rki.coronawarnapp.contactdiary.util.hideKeyboard +import de.rki.coronawarnapp.contactdiary.util.showKeyboard import de.rki.coronawarnapp.databinding.ContactDiaryPersonBottomSheetFragmentBinding import de.rki.coronawarnapp.util.DialogHelper import de.rki.coronawarnapp.util.di.AutoInject @@ -51,7 +53,7 @@ class ContactDiaryPersonBottomSheetDialogFragment : BottomSheetDialogFragment(), } } - binding.contactDiaryPersonBottomSheetCloseButton.buttonIcon.setOnClickListener { + binding.contactDiaryPersonBottomSheetCloseButton.setOnClickListener { viewModel.closePressed() } @@ -69,6 +71,8 @@ class ContactDiaryPersonBottomSheetDialogFragment : BottomSheetDialogFragment(), } } + binding.contactDiaryPersonBottomSheetTextInputEditText.showKeyboard() + viewModel.shouldClose.observe2(this) { dismiss() } @@ -79,6 +83,11 @@ class ContactDiaryPersonBottomSheetDialogFragment : BottomSheetDialogFragment(), } } + override fun onPause() { + super.onPause() + hideKeyboard() + } + override fun onDestroyView() { super.onDestroyView() _binding = null diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/contactdiary/util/ContactDiaryExtensions.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/contactdiary/util/ContactDiaryExtensions.kt index e8083d9a51275277c302c0491e6697936ff7cf80..08be2ecedc7134df94b7d52b8feb2c58ae6f3862 100644 --- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/contactdiary/util/ContactDiaryExtensions.kt +++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/contactdiary/util/ContactDiaryExtensions.kt @@ -1,5 +1,9 @@ package de.rki.coronawarnapp.contactdiary.util +import android.content.Context +import android.view.inputmethod.InputMethodManager +import android.widget.EditText +import androidx.fragment.app.Fragment import androidx.viewpager2.widget.ViewPager2 fun ViewPager2.registerOnPageChangeCallback(cb: (position: Int) -> Unit) { @@ -9,3 +13,15 @@ fun ViewPager2.registerOnPageChangeCallback(cb: (position: Int) -> Unit) { } }) } + +fun EditText.showKeyboard() = post { + if (requestFocus()) context.inputMethodManager.showSoftInput(this, InputMethodManager.SHOW_IMPLICIT) + } + +fun Fragment.hideKeyboard() { + context?.inputMethodManager?.hideSoftInputFromWindow(activity?.currentFocus?.windowToken, 0) + view?.clearFocus() +} + +private val Context.inputMethodManager + get() = getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager diff --git a/Corona-Warn-App/src/main/res/layout/contact_diary_location_bottom_sheet_fragment.xml b/Corona-Warn-App/src/main/res/layout/contact_diary_location_bottom_sheet_fragment.xml index 9b05d3a6b306c9004400170e64742cb7d25865e1..f4e310aeb74cccce9497c0f957455356f33ff7e3 100644 --- a/Corona-Warn-App/src/main/res/layout/contact_diary_location_bottom_sheet_fragment.xml +++ b/Corona-Warn-App/src/main/res/layout/contact_diary_location_bottom_sheet_fragment.xml @@ -5,17 +5,17 @@ android:layout_width="match_parent" android:layout_height="wrap_content"> - <include + <ImageView android:id="@+id/contact_diary_location_bottom_sheet_close_button" - layout="@layout/include_button_icon" - android:layout_width="wrap_content" - android:layout_height="wrap_content" + android:layout_width="@dimen/circle_icon_big" + android:layout_height="@dimen/circle_icon_big" android:layout_marginStart="@dimen/spacing_normal" android:layout_marginTop="@dimen/spacing_small" - app:icon="@{@drawable/ic_close}" - app:iconDescription="@{@string/accessibility_close}" + android:src="@drawable/ic_close" + android:contentDescription="@string/accessibility_close" app:layout_constraintStart_toStartOf="parent" - app:layout_constraintTop_toTopOf="parent" /> + app:layout_constraintTop_toTopOf="parent" + style="@style/buttonIcon" /> <TextView android:id="@+id/contact_diary_location_bottom_sheet_title" @@ -59,7 +59,7 @@ android:id="@+id/contact_diary_location_bottom_sheet_text_input_edit_text" android:layout_width="match_parent" android:layout_height="wrap_content" - android:inputType="text" + android:inputType="textCapWords" android:imeOptions="actionDone"/> </com.google.android.material.textfield.TextInputLayout> diff --git a/Corona-Warn-App/src/main/res/layout/contact_diary_person_bottom_sheet_fragment.xml b/Corona-Warn-App/src/main/res/layout/contact_diary_person_bottom_sheet_fragment.xml index 41550f17918a69e5a3360bdc665ee66ff5bd98e8..9c52b632f32f7350c7b7d39ee3e229ae8ed5320f 100644 --- a/Corona-Warn-App/src/main/res/layout/contact_diary_person_bottom_sheet_fragment.xml +++ b/Corona-Warn-App/src/main/res/layout/contact_diary_person_bottom_sheet_fragment.xml @@ -5,17 +5,17 @@ android:layout_width="match_parent" android:layout_height="wrap_content"> - <include + <ImageView android:id="@+id/contact_diary_person_bottom_sheet_close_button" - layout="@layout/include_button_icon" - android:layout_width="wrap_content" - android:layout_height="wrap_content" + android:layout_width="@dimen/circle_icon_big" + android:layout_height="@dimen/circle_icon_big" android:layout_marginStart="@dimen/spacing_normal" android:layout_marginTop="@dimen/spacing_small" - app:icon="@{@drawable/ic_close}" - app:iconDescription="@{@string/accessibility_close}" + android:src="@drawable/ic_close" + android:contentDescription="@string/accessibility_close" app:layout_constraintStart_toStartOf="parent" - app:layout_constraintTop_toTopOf="parent" /> + app:layout_constraintTop_toTopOf="parent" + style="@style/buttonIcon" /> <TextView android:id="@+id/contact_diary_person_bottom_sheet_title" @@ -58,7 +58,7 @@ android:id="@+id/contact_diary_person_bottom_sheet_text_input_edit_text" android:layout_width="match_parent" android:layout_height="wrap_content" - android:inputType="text" + android:inputType="textCapWords" android:imeOptions="actionDone"/> </com.google.android.material.textfield.TextInputLayout>