From 119a476b4ec0772d60858ff963f095ac4c518153 Mon Sep 17 00:00:00 2001 From: Naveen Date: Tue, 25 Apr 2023 15:49:09 +0530 Subject: [PATCH 1/3] Apply IME insets on scroll view --- app/src/main/AndroidManifest.xml | 3 ++- .../contacts/pro/activities/EditContactActivity.kt | 7 +++++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index dd54bdd4..51805518 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -119,7 +119,8 @@ android:configChanges="orientation" android:exported="true" android:parentActivityName=".activities.MainActivity" - android:theme="@style/TranslucentTheme"> + android:theme="@style/TranslucentTheme" + android:windowSoftInputMode="adjustResize"> diff --git a/app/src/main/kotlin/com/simplemobiletools/contacts/pro/activities/EditContactActivity.kt b/app/src/main/kotlin/com/simplemobiletools/contacts/pro/activities/EditContactActivity.kt index 10c475fd..ae35e22d 100644 --- a/app/src/main/kotlin/com/simplemobiletools/contacts/pro/activities/EditContactActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/contacts/pro/activities/EditContactActivity.kt @@ -22,6 +22,7 @@ import android.widget.ImageView import android.widget.RelativeLayout import android.widget.TextView import androidx.core.content.ContextCompat +import androidx.core.view.WindowInsetsCompat import com.simplemobiletools.commons.dialogs.ConfirmationAdvancedDialog import com.simplemobiletools.commons.dialogs.RadioGroupDialog import com.simplemobiletools.commons.dialogs.SelectAlarmSoundDialog @@ -83,6 +84,12 @@ class EditContactActivity : ContactActivity() { } contact_wrapper.systemUiVisibility = View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN + onApplyWindowInsets { + val insets = it.getInsets(WindowInsetsCompat.Type.ime()) + contact_scrollview.run { + setPadding(paddingLeft, paddingTop, paddingRight, insets.bottom) + } + } setupMenu() val action = intent.action From b0133bbd73ee384ddd696b551df34a97979d205a Mon Sep 17 00:00:00 2001 From: Naveen Date: Sat, 29 Apr 2023 15:02:28 +0530 Subject: [PATCH 2/3] Set clipToPadding to false --- app/src/main/res/layout/activity_edit_contact.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/app/src/main/res/layout/activity_edit_contact.xml b/app/src/main/res/layout/activity_edit_contact.xml index b6f57568..0d25eb73 100644 --- a/app/src/main/res/layout/activity_edit_contact.xml +++ b/app/src/main/res/layout/activity_edit_contact.xml @@ -10,6 +10,7 @@ android:id="@+id/contact_scrollview" android:layout_width="match_parent" android:layout_height="wrap_content" + android:clipToPadding="false" android:scrollbars="none" android:visibility="gone"> From 1a4ad8d04373180339ed32a2c25b6aabe2327f91 Mon Sep 17 00:00:00 2001 From: Naveen Date: Mon, 22 May 2023 00:54:28 +0530 Subject: [PATCH 3/3] Avoid reapplying insets (remove extra paddings) --- .../pro/activities/EditContactActivity.kt | 54 +++++++++++++------ 1 file changed, 38 insertions(+), 16 deletions(-) diff --git a/app/src/main/kotlin/com/simplemobiletools/contacts/pro/activities/EditContactActivity.kt b/app/src/main/kotlin/com/simplemobiletools/contacts/pro/activities/EditContactActivity.kt index a23049b5..e14dc0d4 100644 --- a/app/src/main/kotlin/com/simplemobiletools/contacts/pro/activities/EditContactActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/contacts/pro/activities/EditContactActivity.kt @@ -18,7 +18,10 @@ import android.telephony.PhoneNumberUtils import android.view.View import android.view.ViewGroup import android.view.WindowManager -import android.widget.* +import android.widget.EditText +import android.widget.ImageView +import android.widget.RelativeLayout +import android.widget.TextView import androidx.core.content.ContextCompat import androidx.core.view.WindowInsetsCompat import androidx.core.widget.doAfterTextChanged @@ -40,16 +43,29 @@ import com.simplemobiletools.contacts.pro.dialogs.CustomLabelDialog import com.simplemobiletools.contacts.pro.dialogs.ManageVisibleFieldsDialog import com.simplemobiletools.contacts.pro.dialogs.MyDatePickerDialog import com.simplemobiletools.contacts.pro.dialogs.SelectGroupsDialog -import com.simplemobiletools.contacts.pro.extensions.* -import com.simplemobiletools.contacts.pro.helpers.* +import com.simplemobiletools.contacts.pro.extensions.config +import com.simplemobiletools.contacts.pro.extensions.getCachePhotoUri +import com.simplemobiletools.contacts.pro.extensions.showContactSourcePicker +import com.simplemobiletools.contacts.pro.helpers.ADD_NEW_CONTACT_NUMBER +import com.simplemobiletools.contacts.pro.helpers.IS_FROM_SIMPLE_CONTACTS +import com.simplemobiletools.contacts.pro.helpers.KEY_EMAIL +import com.simplemobiletools.contacts.pro.helpers.KEY_NAME import kotlinx.android.synthetic.main.activity_edit_contact.* -import kotlinx.android.synthetic.main.item_edit_address.view.* -import kotlinx.android.synthetic.main.item_edit_email.view.* -import kotlinx.android.synthetic.main.item_edit_group.view.* -import kotlinx.android.synthetic.main.item_edit_im.view.* -import kotlinx.android.synthetic.main.item_edit_phone_number.view.* -import kotlinx.android.synthetic.main.item_edit_website.view.* -import kotlinx.android.synthetic.main.item_event.view.* +import kotlinx.android.synthetic.main.item_edit_address.view.contact_address +import kotlinx.android.synthetic.main.item_edit_address.view.contact_address_type +import kotlinx.android.synthetic.main.item_edit_email.view.contact_email +import kotlinx.android.synthetic.main.item_edit_email.view.contact_email_type +import kotlinx.android.synthetic.main.item_edit_group.view.contact_group +import kotlinx.android.synthetic.main.item_edit_group.view.contact_group_remove +import kotlinx.android.synthetic.main.item_edit_im.view.contact_im +import kotlinx.android.synthetic.main.item_edit_im.view.contact_im_type +import kotlinx.android.synthetic.main.item_edit_phone_number.view.contact_number +import kotlinx.android.synthetic.main.item_edit_phone_number.view.contact_number_type +import kotlinx.android.synthetic.main.item_edit_phone_number.view.default_toggle_icon +import kotlinx.android.synthetic.main.item_edit_website.view.contact_website +import kotlinx.android.synthetic.main.item_event.view.contact_event +import kotlinx.android.synthetic.main.item_event.view.contact_event_remove +import kotlinx.android.synthetic.main.item_event.view.contact_event_type class EditContactActivity : ContactActivity() { private val INTENT_TAKE_PHOTO = 1 @@ -87,12 +103,7 @@ class EditContactActivity : ContactActivity() { } contact_wrapper.systemUiVisibility = View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN - onApplyWindowInsets { - val insets = it.getInsets(WindowInsetsCompat.Type.ime()) - contact_scrollview.run { - setPadding(paddingLeft, paddingTop, paddingRight, insets.bottom) - } - } + setupInsets() setupMenu() val action = intent.action @@ -296,6 +307,17 @@ class EditContactActivity : ContactActivity() { } } + private fun setupInsets() { + contact_wrapper.setOnApplyWindowInsetsListener { _, insets -> + val windowInsets = WindowInsetsCompat.toWindowInsetsCompat(insets) + val imeInsets = windowInsets.getInsets(WindowInsetsCompat.Type.ime()) + contact_scrollview.run { + setPadding(paddingLeft, paddingTop, paddingRight, imeInsets.bottom) + } + insets + } + } + private fun setupMenu() { (contact_appbar.layoutParams as RelativeLayout.LayoutParams).topMargin = statusBarHeight contact_toolbar.menu.apply {