From 9eae40b4f3ef60b897d28f78f872ade4a0ef5ed4 Mon Sep 17 00:00:00 2001 From: Chilja Gossow <49635654+chiljamgossow@users.noreply.github.com> Date: Fri, 18 Dec 2020 13:38:19 +0100 Subject: [PATCH] Show keyboard (EXPOSUREAPP-4397) #1937 * show keyboard on default start with capital letter * show keyboard on default start with capital letter Co-authored-by: Kolya Opahle <k.opahle@sap.com> Co-authored-by: Ralf Gehrer <ralfgehrer@users.noreply.github.com> --- Corona-Warn-App/src/main/AndroidManifest.xml | 3 ++- ...tactDiaryLocationBottomSheetDialogFragment.kt | 11 ++++++++++- ...ontactDiaryPersonBottomSheetDialogFragment.kt | 11 ++++++++++- .../contactdiary/util/ContactDiaryExtensions.kt | 16 ++++++++++++++++ ...tact_diary_location_bottom_sheet_fragment.xml | 16 ++++++++-------- ...ontact_diary_person_bottom_sheet_fragment.xml | 16 ++++++++-------- 6 files changed, 54 insertions(+), 19 deletions(-) diff --git a/Corona-Warn-App/src/main/AndroidManifest.xml b/Corona-Warn-App/src/main/AndroidManifest.xml index f4096417f..5cd5f108e 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 ea041c635..884bd20ed 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 bed3a7933..430306042 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 e8083d9a5..08be2eced 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 9b05d3a6b..f4e310aeb 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 41550f179..9c52b632f 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> -- GitLab