mirror of
https://github.com/sudoxnym/habitica-android.git
synced 2026-04-14 19:56:32 +00:00
fix content padding in nested scroll views
This commit is contained in:
parent
eb00e4c8c2
commit
be77530a09
32 changed files with 97 additions and 24 deletions
|
|
@ -31,6 +31,7 @@
|
||||||
android:scrollbars="vertical">
|
android:scrollbars="vertical">
|
||||||
|
|
||||||
<LinearLayout
|
<LinearLayout
|
||||||
|
android:id="@+id/scroll_content"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
android:gravity="center_horizontal"
|
android:gravity="center_horizontal"
|
||||||
|
|
|
||||||
|
|
@ -18,6 +18,7 @@
|
||||||
android:orientation="horizontal"
|
android:orientation="horizontal"
|
||||||
android:background="?colorPrimaryOffset"
|
android:background="?colorPrimaryOffset"
|
||||||
android:clipToPadding="false"
|
android:clipToPadding="false"
|
||||||
|
android:clipChildren="false"
|
||||||
android:baselineAligned="false">
|
android:baselineAligned="false">
|
||||||
|
|
||||||
<com.habitrpg.android.habitica.ui.RoundedFrameLayout
|
<com.habitrpg.android.habitica.ui.RoundedFrameLayout
|
||||||
|
|
@ -69,6 +70,7 @@
|
||||||
android:id="@+id/notificationsButtonWrapper"
|
android:id="@+id/notificationsButtonWrapper"
|
||||||
android:layout_width="33dp"
|
android:layout_width="33dp"
|
||||||
android:layout_height="33dp"
|
android:layout_height="33dp"
|
||||||
|
android:clipChildren="false"
|
||||||
android:layout_marginStart="16dp">
|
android:layout_marginStart="16dp">
|
||||||
|
|
||||||
<ImageView
|
<ImageView
|
||||||
|
|
@ -104,6 +106,8 @@
|
||||||
android:id="@+id/messagesButtonWrapper"
|
android:id="@+id/messagesButtonWrapper"
|
||||||
android:layout_width="33dp"
|
android:layout_width="33dp"
|
||||||
android:layout_height="33dp"
|
android:layout_height="33dp"
|
||||||
|
android:clipChildren="false"
|
||||||
|
android:clipToPadding="false"
|
||||||
android:layout_marginStart="8dp">
|
android:layout_marginStart="8dp">
|
||||||
|
|
||||||
<ImageView
|
<ImageView
|
||||||
|
|
@ -138,7 +142,7 @@
|
||||||
<RelativeLayout
|
<RelativeLayout
|
||||||
android:id="@+id/settingsButtonWrapper"
|
android:id="@+id/settingsButtonWrapper"
|
||||||
android:layout_width="43dp"
|
android:layout_width="43dp"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="33dp"
|
||||||
android:paddingStart="8dp"
|
android:paddingStart="8dp"
|
||||||
android:paddingEnd="0dp">
|
android:paddingEnd="0dp">
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -7,6 +7,7 @@
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
android:orientation="vertical">
|
android:orientation="vertical">
|
||||||
<LinearLayout
|
<LinearLayout
|
||||||
|
android:id="@+id/scroll_content"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:orientation="vertical"
|
android:orientation="vertical"
|
||||||
|
|
|
||||||
|
|
@ -9,6 +9,7 @@
|
||||||
android:scrollbars="vertical">
|
android:scrollbars="vertical">
|
||||||
|
|
||||||
<LinearLayout
|
<LinearLayout
|
||||||
|
android:id="@+id/scroll_content"
|
||||||
android:orientation="vertical"
|
android:orientation="vertical"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
|
|
|
||||||
|
|
@ -6,6 +6,7 @@
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content">
|
android:layout_height="wrap_content">
|
||||||
<LinearLayout
|
<LinearLayout
|
||||||
|
android:id="@+id/scroll_content"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:orientation="vertical"
|
android:orientation="vertical"
|
||||||
|
|
|
||||||
|
|
@ -10,6 +10,7 @@
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent">
|
android:layout_height="match_parent">
|
||||||
<LinearLayout
|
<LinearLayout
|
||||||
|
android:id="@+id/scroll_content"
|
||||||
android:orientation="vertical"
|
android:orientation="vertical"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content">
|
android:layout_height="wrap_content">
|
||||||
|
|
|
||||||
|
|
@ -14,6 +14,7 @@
|
||||||
android:scrollbars="vertical">
|
android:scrollbars="vertical">
|
||||||
|
|
||||||
<LinearLayout
|
<LinearLayout
|
||||||
|
android:id="@+id/scroll_content"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:orientation="vertical">
|
android:orientation="vertical">
|
||||||
|
|
|
||||||
|
|
@ -10,6 +10,7 @@
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent">
|
android:layout_height="match_parent">
|
||||||
<LinearLayout
|
<LinearLayout
|
||||||
|
android:id="@+id/scroll_content"
|
||||||
android:orientation="vertical"
|
android:orientation="vertical"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
|
|
|
||||||
|
|
@ -6,6 +6,7 @@
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent">
|
android:layout_height="match_parent">
|
||||||
<LinearLayout
|
<LinearLayout
|
||||||
|
android:id="@+id/scroll_content"
|
||||||
android:orientation="vertical"
|
android:orientation="vertical"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,7 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
<LinearLayout
|
||||||
|
android:id="@+id/content_wrapper"
|
||||||
|
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||||
android:orientation="vertical" android:layout_width="match_parent"
|
android:orientation="vertical" android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,7 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
<LinearLayout
|
||||||
|
android:id="@+id/content_wrapper"
|
||||||
|
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||||
android:orientation="vertical" android:layout_width="match_parent"
|
android:orientation="vertical" android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
|
|
|
||||||
|
|
@ -5,6 +5,7 @@
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
xmlns:app="http://schemas.android.com/apk/res-auto">
|
xmlns:app="http://schemas.android.com/apk/res-auto">
|
||||||
<LinearLayout
|
<LinearLayout
|
||||||
|
android:id="@+id/scroll_content"
|
||||||
android:orientation="vertical" android:layout_width="match_parent"
|
android:orientation="vertical" android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
android:background="?attr/colorContentBackground"
|
android:background="?attr/colorContentBackground"
|
||||||
|
|
|
||||||
|
|
@ -4,6 +4,7 @@
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent">
|
android:layout_height="match_parent">
|
||||||
<LinearLayout
|
<LinearLayout
|
||||||
|
android:id="@+id/scroll_content"
|
||||||
android:orientation="vertical"
|
android:orientation="vertical"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
|
|
@ -165,6 +166,7 @@
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
<View
|
<View
|
||||||
|
android:id="@+id/reset_tutorial_button_wrapper"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="1dp"
|
android:layout_height="1dp"
|
||||||
android:background="?attr/colorContentBackgroundOffset"/>
|
android:background="?attr/colorContentBackgroundOffset"/>
|
||||||
|
|
|
||||||
|
|
@ -1,9 +1,32 @@
|
||||||
package com.habitrpg.android.habitica.extensions
|
package com.habitrpg.android.habitica.extensions
|
||||||
|
|
||||||
import android.os.Build
|
import android.os.Build
|
||||||
|
import android.view.View
|
||||||
|
import androidx.core.view.ViewCompat
|
||||||
import androidx.core.view.WindowInsetsCompat
|
import androidx.core.view.WindowInsetsCompat
|
||||||
|
import androidx.core.view.updatePadding
|
||||||
|
|
||||||
fun consumeWindowInsetsAbove30(insets: WindowInsetsCompat): WindowInsetsCompat {
|
fun consumeWindowInsetsAbove30(insets: WindowInsetsCompat): WindowInsetsCompat {
|
||||||
if (Build.VERSION.SDK_INT >= 30) return WindowInsetsCompat.CONSUMED
|
if (Build.VERSION.SDK_INT >= 30) return WindowInsetsCompat.CONSUMED
|
||||||
return insets
|
return insets
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun applyScrollContentWindowInsets(view: View,
|
||||||
|
applyTop: Boolean = false,
|
||||||
|
applyBottom: Boolean = true,
|
||||||
|
applyLeft: Boolean = true,
|
||||||
|
applyRight: Boolean = true) {
|
||||||
|
val topPadding = view.paddingTop
|
||||||
|
val leftPadding = view.paddingLeft
|
||||||
|
val rightPadding = view.paddingRight
|
||||||
|
val bottomPadding = view.paddingBottom
|
||||||
|
ViewCompat.setOnApplyWindowInsetsListener(view) { v, windowInsets ->
|
||||||
|
val insets = windowInsets.getInsets(WindowInsetsCompat.Type.systemBars() + WindowInsetsCompat.Type.displayCutout())
|
||||||
|
v.updatePadding(
|
||||||
|
top = (if (applyTop) insets.top else 0) + topPadding,
|
||||||
|
left = (if (applyLeft) insets.left else 0) + leftPadding,
|
||||||
|
right = (if (applyRight) insets.right else 0) + rightPadding,
|
||||||
|
bottom = (if (applyBottom) insets.bottom else 0) + bottomPadding)
|
||||||
|
consumeWindowInsetsAbove30(windowInsets)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
||||||
|
|
@ -14,6 +14,7 @@ import androidx.core.view.updatePadding
|
||||||
import com.habitrpg.android.habitica.R
|
import com.habitrpg.android.habitica.R
|
||||||
import com.habitrpg.android.habitica.databinding.ActivityAdventureGuideBinding
|
import com.habitrpg.android.habitica.databinding.ActivityAdventureGuideBinding
|
||||||
import com.habitrpg.android.habitica.databinding.AdventureGuideItemBinding
|
import com.habitrpg.android.habitica.databinding.AdventureGuideItemBinding
|
||||||
|
import com.habitrpg.android.habitica.extensions.applyScrollContentWindowInsets
|
||||||
import com.habitrpg.android.habitica.extensions.consumeWindowInsetsAbove30
|
import com.habitrpg.android.habitica.extensions.consumeWindowInsetsAbove30
|
||||||
import com.habitrpg.android.habitica.helpers.Analytics
|
import com.habitrpg.android.habitica.helpers.Analytics
|
||||||
import com.habitrpg.android.habitica.models.user.User
|
import com.habitrpg.android.habitica.models.user.User
|
||||||
|
|
@ -78,19 +79,7 @@ class AdventureGuideActivity : BaseActivity() {
|
||||||
|
|
||||||
override fun onAttachedToWindow() {
|
override fun onAttachedToWindow() {
|
||||||
super.onAttachedToWindow()
|
super.onAttachedToWindow()
|
||||||
ViewCompat.setOnApplyWindowInsetsListener(binding.nestedScrollView) { v, insets ->
|
applyScrollContentWindowInsets(binding.scrollContent)
|
||||||
val bars = insets.getInsets(
|
|
||||||
WindowInsetsCompat.Type.systemBars()
|
|
||||||
or WindowInsetsCompat.Type.displayCutout()
|
|
||||||
)
|
|
||||||
v.updatePadding(
|
|
||||||
top = bars.top,
|
|
||||||
bottom = bars.bottom,
|
|
||||||
left = bars.left,
|
|
||||||
right = bars.right
|
|
||||||
)
|
|
||||||
consumeWindowInsetsAbove30(insets)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onOptionsItemSelected(item: MenuItem): Boolean {
|
override fun onOptionsItemSelected(item: MenuItem): Boolean {
|
||||||
|
|
|
||||||
|
|
@ -48,6 +48,7 @@ import com.habitrpg.android.habitica.data.TaskRepository
|
||||||
import com.habitrpg.android.habitica.databinding.ActivityTaskFormBinding
|
import com.habitrpg.android.habitica.databinding.ActivityTaskFormBinding
|
||||||
import com.habitrpg.android.habitica.extensions.OnChangeTextWatcher
|
import com.habitrpg.android.habitica.extensions.OnChangeTextWatcher
|
||||||
import com.habitrpg.android.habitica.extensions.addCancelButton
|
import com.habitrpg.android.habitica.extensions.addCancelButton
|
||||||
|
import com.habitrpg.android.habitica.extensions.applyScrollContentWindowInsets
|
||||||
import com.habitrpg.android.habitica.extensions.consumeWindowInsetsAbove30
|
import com.habitrpg.android.habitica.extensions.consumeWindowInsetsAbove30
|
||||||
import com.habitrpg.android.habitica.helpers.AppConfigManager
|
import com.habitrpg.android.habitica.helpers.AppConfigManager
|
||||||
import com.habitrpg.android.habitica.helpers.TaskAlarmManager
|
import com.habitrpg.android.habitica.helpers.TaskAlarmManager
|
||||||
|
|
@ -433,11 +434,7 @@ class TaskFormActivity : BaseActivity() {
|
||||||
|
|
||||||
override fun onAttachedToWindow() {
|
override fun onAttachedToWindow() {
|
||||||
super.onAttachedToWindow()
|
super.onAttachedToWindow()
|
||||||
ViewCompat.setOnApplyWindowInsetsListener(binding.mainFormContent) { v, windowInsets ->
|
applyScrollContentWindowInsets(binding.mainFormContent)
|
||||||
val insets = windowInsets.getInsets(WindowInsetsCompat.Type.systemBars())
|
|
||||||
v.updatePadding(bottom = insets.bottom)
|
|
||||||
consumeWindowInsetsAbove30(windowInsets)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onResume() {
|
override fun onResume() {
|
||||||
|
|
|
||||||
|
|
@ -5,8 +5,10 @@ import android.view.LayoutInflater
|
||||||
import android.view.View
|
import android.view.View
|
||||||
import android.view.ViewGroup
|
import android.view.ViewGroup
|
||||||
import androidx.preference.PreferenceFragmentCompat
|
import androidx.preference.PreferenceFragmentCompat
|
||||||
|
import androidx.recyclerview.widget.RecyclerView
|
||||||
import com.habitrpg.android.habitica.R
|
import com.habitrpg.android.habitica.R
|
||||||
import com.habitrpg.android.habitica.data.UserRepository
|
import com.habitrpg.android.habitica.data.UserRepository
|
||||||
|
import com.habitrpg.android.habitica.extensions.applyScrollContentWindowInsets
|
||||||
import com.habitrpg.android.habitica.models.user.User
|
import com.habitrpg.android.habitica.models.user.User
|
||||||
import com.habitrpg.android.habitica.ui.viewmodels.MainUserViewModel
|
import com.habitrpg.android.habitica.ui.viewmodels.MainUserViewModel
|
||||||
import javax.inject.Inject
|
import javax.inject.Inject
|
||||||
|
|
@ -29,6 +31,14 @@ abstract class BasePreferencesFragment : PreferenceFragmentCompat() {
|
||||||
return super.onCreateView(inflater, container, savedInstanceState)
|
return super.onCreateView(inflater, container, savedInstanceState)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||||
|
super.onViewCreated(view, savedInstanceState)
|
||||||
|
|
||||||
|
view.findViewById<RecyclerView>(R.id.recycler_view)?.let {
|
||||||
|
applyScrollContentWindowInsets(it)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
override fun onDestroy() {
|
override fun onDestroy() {
|
||||||
userRepository.close()
|
userRepository.close()
|
||||||
super.onDestroy()
|
super.onDestroy()
|
||||||
|
|
|
||||||
|
|
@ -14,6 +14,7 @@ import com.habitrpg.android.habitica.data.InventoryRepository
|
||||||
import com.habitrpg.android.habitica.data.SetupCustomizationRepository
|
import com.habitrpg.android.habitica.data.SetupCustomizationRepository
|
||||||
import com.habitrpg.android.habitica.data.UserRepository
|
import com.habitrpg.android.habitica.data.UserRepository
|
||||||
import com.habitrpg.android.habitica.databinding.FragmentSetupAvatarBinding
|
import com.habitrpg.android.habitica.databinding.FragmentSetupAvatarBinding
|
||||||
|
import com.habitrpg.android.habitica.extensions.applyScrollContentWindowInsets
|
||||||
import com.habitrpg.android.habitica.models.SetupCustomization
|
import com.habitrpg.android.habitica.models.SetupCustomization
|
||||||
import com.habitrpg.android.habitica.models.user.User
|
import com.habitrpg.android.habitica.models.user.User
|
||||||
import com.habitrpg.android.habitica.ui.activities.SetupActivity
|
import com.habitrpg.android.habitica.ui.activities.SetupActivity
|
||||||
|
|
@ -113,6 +114,7 @@ class AvatarSetupFragment : BaseFragment<FragmentSetupAvatarBinding>() {
|
||||||
if (this.user != null) {
|
if (this.user != null) {
|
||||||
this.updateAvatar()
|
this.updateAvatar()
|
||||||
}
|
}
|
||||||
|
binding?.contentWrapper?.let { applyScrollContentWindowInsets(it) }
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onResume() {
|
override fun onResume() {
|
||||||
|
|
|
||||||
|
|
@ -8,6 +8,7 @@ import android.view.ViewGroup
|
||||||
import androidx.recyclerview.widget.GridLayoutManager
|
import androidx.recyclerview.widget.GridLayoutManager
|
||||||
import com.habitrpg.android.habitica.R
|
import com.habitrpg.android.habitica.R
|
||||||
import com.habitrpg.android.habitica.databinding.FragmentSetupTasksBinding
|
import com.habitrpg.android.habitica.databinding.FragmentSetupTasksBinding
|
||||||
|
import com.habitrpg.android.habitica.extensions.applyScrollContentWindowInsets
|
||||||
import com.habitrpg.android.habitica.models.tasks.Days
|
import com.habitrpg.android.habitica.models.tasks.Days
|
||||||
import com.habitrpg.android.habitica.models.tasks.Task
|
import com.habitrpg.android.habitica.models.tasks.Task
|
||||||
import com.habitrpg.android.habitica.models.user.User
|
import com.habitrpg.android.habitica.models.user.User
|
||||||
|
|
@ -63,6 +64,8 @@ class TaskSetupFragment : BaseFragment<FragmentSetupTasksBinding>() {
|
||||||
HabiticaIconsHelper.imageOfHeartLightBg()
|
HabiticaIconsHelper.imageOfHeartLightBg()
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
|
binding?.contentWrapper?.let { applyScrollContentWindowInsets(it) }
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onResume() {
|
override fun onResume() {
|
||||||
|
|
|
||||||
|
|
@ -16,6 +16,7 @@ import androidx.recyclerview.widget.LinearLayoutManager
|
||||||
import com.habitrpg.android.habitica.R
|
import com.habitrpg.android.habitica.R
|
||||||
import com.habitrpg.android.habitica.data.SocialRepository
|
import com.habitrpg.android.habitica.data.SocialRepository
|
||||||
import com.habitrpg.android.habitica.databinding.FragmentChatBinding
|
import com.habitrpg.android.habitica.databinding.FragmentChatBinding
|
||||||
|
import com.habitrpg.android.habitica.extensions.applyScrollContentWindowInsets
|
||||||
import com.habitrpg.android.habitica.helpers.AppConfigManager
|
import com.habitrpg.android.habitica.helpers.AppConfigManager
|
||||||
import com.habitrpg.android.habitica.models.social.ChatMessage
|
import com.habitrpg.android.habitica.models.social.ChatMessage
|
||||||
import com.habitrpg.android.habitica.ui.activities.FullProfileActivity
|
import com.habitrpg.android.habitica.ui.activities.FullProfileActivity
|
||||||
|
|
@ -136,6 +137,7 @@ open class ChatFragment : BaseFragment<FragmentChatBinding>() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
binding?.chatBarView?.let { applyScrollContentWindowInsets(it) }
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onResume() {
|
override fun onResume() {
|
||||||
|
|
|
||||||
|
|
@ -21,6 +21,7 @@ import com.habitrpg.android.habitica.R
|
||||||
import com.habitrpg.android.habitica.data.SocialRepository
|
import com.habitrpg.android.habitica.data.SocialRepository
|
||||||
import com.habitrpg.android.habitica.databinding.FragmentInboxMessageListBinding
|
import com.habitrpg.android.habitica.databinding.FragmentInboxMessageListBinding
|
||||||
import com.habitrpg.android.habitica.extensions.addOkButton
|
import com.habitrpg.android.habitica.extensions.addOkButton
|
||||||
|
import com.habitrpg.android.habitica.extensions.applyScrollContentWindowInsets
|
||||||
import com.habitrpg.android.habitica.helpers.AppConfigManager
|
import com.habitrpg.android.habitica.helpers.AppConfigManager
|
||||||
import com.habitrpg.android.habitica.models.social.ChatMessage
|
import com.habitrpg.android.habitica.models.social.ChatMessage
|
||||||
import com.habitrpg.android.habitica.ui.activities.FullProfileActivity
|
import com.habitrpg.android.habitica.ui.activities.FullProfileActivity
|
||||||
|
|
@ -134,6 +135,7 @@ class InboxMessageListFragment : BaseMainFragment<FragmentInboxMessageListBindin
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
binding?.chatBarView?.let { applyScrollContentWindowInsets(it) }
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onResume() {
|
override fun onResume() {
|
||||||
|
|
|
||||||
|
|
@ -15,6 +15,7 @@ import com.habitrpg.android.habitica.R
|
||||||
import com.habitrpg.android.habitica.data.InventoryRepository
|
import com.habitrpg.android.habitica.data.InventoryRepository
|
||||||
import com.habitrpg.android.habitica.data.SocialRepository
|
import com.habitrpg.android.habitica.data.SocialRepository
|
||||||
import com.habitrpg.android.habitica.databinding.FragmentQuestDetailBinding
|
import com.habitrpg.android.habitica.databinding.FragmentQuestDetailBinding
|
||||||
|
import com.habitrpg.android.habitica.extensions.applyScrollContentWindowInsets
|
||||||
import com.habitrpg.android.habitica.helpers.HapticFeedbackManager
|
import com.habitrpg.android.habitica.helpers.HapticFeedbackManager
|
||||||
import com.habitrpg.android.habitica.models.inventory.Quest
|
import com.habitrpg.android.habitica.models.inventory.Quest
|
||||||
import com.habitrpg.android.habitica.models.inventory.QuestContent
|
import com.habitrpg.android.habitica.models.inventory.QuestContent
|
||||||
|
|
@ -100,6 +101,7 @@ class QuestDetailFragment : BaseMainFragment<FragmentQuestDetailBinding>() {
|
||||||
updateQuestContent(it)
|
updateQuestContent(it)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
binding?.scrollContent?.let { applyScrollContentWindowInsets(it) }
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun updateParty(group: Group?) {
|
private fun updateParty(group: Group?) {
|
||||||
|
|
|
||||||
|
|
@ -18,6 +18,7 @@ import com.habitrpg.android.habitica.data.SocialRepository
|
||||||
import com.habitrpg.android.habitica.databinding.DialogChallengeDetailTaskGroupBinding
|
import com.habitrpg.android.habitica.databinding.DialogChallengeDetailTaskGroupBinding
|
||||||
import com.habitrpg.android.habitica.databinding.FragmentChallengeDetailBinding
|
import com.habitrpg.android.habitica.databinding.FragmentChallengeDetailBinding
|
||||||
import com.habitrpg.android.habitica.extensions.addCloseButton
|
import com.habitrpg.android.habitica.extensions.addCloseButton
|
||||||
|
import com.habitrpg.android.habitica.extensions.applyScrollContentWindowInsets
|
||||||
import com.habitrpg.android.habitica.models.members.Member
|
import com.habitrpg.android.habitica.models.members.Member
|
||||||
import com.habitrpg.android.habitica.models.social.Challenge
|
import com.habitrpg.android.habitica.models.social.Challenge
|
||||||
import com.habitrpg.android.habitica.models.tasks.Task
|
import com.habitrpg.android.habitica.models.tasks.Task
|
||||||
|
|
@ -165,7 +166,7 @@ class ChallengeDetailFragment : BaseMainFragment<FragmentChallengeDetailBinding>
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
binding?.leaveButton?.setOnClickListener { showChallengeLeaveDialog() }
|
binding?.leaveButton?.setOnClickListener { showChallengeLeaveDialog() }
|
||||||
|
binding?.scrollContent?.let { applyScrollContentWindowInsets(it) }
|
||||||
refresh()
|
refresh()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -7,6 +7,9 @@ import android.view.LayoutInflater
|
||||||
import android.view.View
|
import android.view.View
|
||||||
import android.view.ViewGroup
|
import android.view.ViewGroup
|
||||||
import androidx.activity.result.contract.ActivityResultContracts
|
import androidx.activity.result.contract.ActivityResultContracts
|
||||||
|
import androidx.core.view.ViewCompat
|
||||||
|
import androidx.core.view.WindowInsetsCompat
|
||||||
|
import androidx.core.view.updatePadding
|
||||||
import androidx.fragment.app.Fragment
|
import androidx.fragment.app.Fragment
|
||||||
import androidx.fragment.app.viewModels
|
import androidx.fragment.app.viewModels
|
||||||
import androidx.lifecycle.lifecycleScope
|
import androidx.lifecycle.lifecycleScope
|
||||||
|
|
@ -15,6 +18,8 @@ import com.habitrpg.android.habitica.R
|
||||||
import com.habitrpg.android.habitica.data.ChallengeRepository
|
import com.habitrpg.android.habitica.data.ChallengeRepository
|
||||||
import com.habitrpg.android.habitica.data.UserRepository
|
import com.habitrpg.android.habitica.data.UserRepository
|
||||||
import com.habitrpg.android.habitica.databinding.FragmentGuildDetailBinding
|
import com.habitrpg.android.habitica.databinding.FragmentGuildDetailBinding
|
||||||
|
import com.habitrpg.android.habitica.extensions.applyScrollContentWindowInsets
|
||||||
|
import com.habitrpg.android.habitica.extensions.consumeWindowInsetsAbove30
|
||||||
import com.habitrpg.android.habitica.helpers.AppConfigManager
|
import com.habitrpg.android.habitica.helpers.AppConfigManager
|
||||||
import com.habitrpg.android.habitica.models.members.Member
|
import com.habitrpg.android.habitica.models.members.Member
|
||||||
import com.habitrpg.android.habitica.models.social.Challenge
|
import com.habitrpg.android.habitica.models.social.Challenge
|
||||||
|
|
@ -89,6 +94,8 @@ class GuildDetailFragment : BaseFragment<FragmentGuildDetailBinding>() {
|
||||||
MainNavigationController.navigate(profileDirections)
|
MainNavigationController.navigate(profileDirections)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
binding?.scrollContent?.let { applyScrollContentWindowInsets(it) }
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun setLeader(leader: Member?) {
|
private fun setLeader(leader: Member?) {
|
||||||
|
|
|
||||||
|
|
@ -17,6 +17,7 @@ import androidx.lifecycle.lifecycleScope
|
||||||
import com.habitrpg.android.habitica.R
|
import com.habitrpg.android.habitica.R
|
||||||
import com.habitrpg.android.habitica.data.SocialRepository
|
import com.habitrpg.android.habitica.data.SocialRepository
|
||||||
import com.habitrpg.android.habitica.databinding.FragmentNoPartyBinding
|
import com.habitrpg.android.habitica.databinding.FragmentNoPartyBinding
|
||||||
|
import com.habitrpg.android.habitica.extensions.applyScrollContentWindowInsets
|
||||||
import com.habitrpg.android.habitica.helpers.AppConfigManager
|
import com.habitrpg.android.habitica.helpers.AppConfigManager
|
||||||
import com.habitrpg.android.habitica.ui.activities.GroupFormActivity
|
import com.habitrpg.android.habitica.ui.activities.GroupFormActivity
|
||||||
import com.habitrpg.android.habitica.ui.fragments.BaseMainFragment
|
import com.habitrpg.android.habitica.ui.fragments.BaseMainFragment
|
||||||
|
|
@ -144,6 +145,8 @@ class NoPartyFragmentFragment : BaseMainFragment<FragmentNoPartyBinding>() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
binding?.scrollContent?.let { applyScrollContentWindowInsets(it) }
|
||||||
}
|
}
|
||||||
|
|
||||||
private val groupFormResult =
|
private val groupFormResult =
|
||||||
|
|
|
||||||
|
|
@ -20,6 +20,7 @@ import com.habitrpg.android.habitica.data.InventoryRepository
|
||||||
import com.habitrpg.android.habitica.data.SocialRepository
|
import com.habitrpg.android.habitica.data.SocialRepository
|
||||||
import com.habitrpg.android.habitica.data.UserRepository
|
import com.habitrpg.android.habitica.data.UserRepository
|
||||||
import com.habitrpg.android.habitica.databinding.FragmentPartyDetailBinding
|
import com.habitrpg.android.habitica.databinding.FragmentPartyDetailBinding
|
||||||
|
import com.habitrpg.android.habitica.extensions.applyScrollContentWindowInsets
|
||||||
import com.habitrpg.android.habitica.helpers.AppConfigManager
|
import com.habitrpg.android.habitica.helpers.AppConfigManager
|
||||||
import com.habitrpg.android.habitica.helpers.HapticFeedbackManager
|
import com.habitrpg.android.habitica.helpers.HapticFeedbackManager
|
||||||
import com.habitrpg.android.habitica.models.inventory.QuestContent
|
import com.habitrpg.android.habitica.models.inventory.QuestContent
|
||||||
|
|
@ -161,6 +162,8 @@ class PartyDetailFragment : BaseFragment<FragmentPartyDetailBinding>() {
|
||||||
binding?.questMechanicsButton?.setOnClickListener {
|
binding?.questMechanicsButton?.setOnClickListener {
|
||||||
showQuestMechanicsDialog()
|
showQuestMechanicsDialog()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
binding?.scrollContent?.let { applyScrollContentWindowInsets(it) }
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun refreshParty() {
|
private fun refreshParty() {
|
||||||
|
|
|
||||||
|
|
@ -13,6 +13,7 @@ import androidx.lifecycle.lifecycleScope
|
||||||
import com.habitrpg.android.habitica.R
|
import com.habitrpg.android.habitica.R
|
||||||
import com.habitrpg.android.habitica.databinding.FragmentSupportBugFixBinding
|
import com.habitrpg.android.habitica.databinding.FragmentSupportBugFixBinding
|
||||||
import com.habitrpg.android.habitica.databinding.KnownIssueBinding
|
import com.habitrpg.android.habitica.databinding.KnownIssueBinding
|
||||||
|
import com.habitrpg.android.habitica.extensions.applyScrollContentWindowInsets
|
||||||
import com.habitrpg.android.habitica.helpers.AppConfigManager
|
import com.habitrpg.android.habitica.helpers.AppConfigManager
|
||||||
import com.habitrpg.android.habitica.ui.fragments.BaseMainFragment
|
import com.habitrpg.android.habitica.ui.fragments.BaseMainFragment
|
||||||
import com.habitrpg.android.habitica.ui.viewmodels.MainUserViewModel
|
import com.habitrpg.android.habitica.ui.viewmodels.MainUserViewModel
|
||||||
|
|
@ -80,6 +81,7 @@ class BugFixFragment : BaseMainFragment<FragmentSupportBugFixBinding>() {
|
||||||
}
|
}
|
||||||
binding?.knownIssuesLayout?.addView(issueBinding.root)
|
binding?.knownIssuesLayout?.addView(issueBinding.root)
|
||||||
}
|
}
|
||||||
|
binding?.scrollContent?.let { applyScrollContentWindowInsets(it) }
|
||||||
}
|
}
|
||||||
|
|
||||||
private val versionName: String by lazy {
|
private val versionName: String by lazy {
|
||||||
|
|
|
||||||
|
|
@ -8,6 +8,7 @@ import android.view.ViewGroup
|
||||||
import androidx.lifecycle.lifecycleScope
|
import androidx.lifecycle.lifecycleScope
|
||||||
import com.habitrpg.android.habitica.data.FAQRepository
|
import com.habitrpg.android.habitica.data.FAQRepository
|
||||||
import com.habitrpg.android.habitica.databinding.FragmentFaqDetailBinding
|
import com.habitrpg.android.habitica.databinding.FragmentFaqDetailBinding
|
||||||
|
import com.habitrpg.android.habitica.extensions.applyScrollContentWindowInsets
|
||||||
import com.habitrpg.android.habitica.ui.fragments.BaseMainFragment
|
import com.habitrpg.android.habitica.ui.fragments.BaseMainFragment
|
||||||
import com.habitrpg.common.habitica.helpers.MarkdownParser
|
import com.habitrpg.common.habitica.helpers.MarkdownParser
|
||||||
import com.habitrpg.common.habitica.helpers.launchCatching
|
import com.habitrpg.common.habitica.helpers.launchCatching
|
||||||
|
|
@ -60,5 +61,6 @@ class FAQDetailFragment : BaseMainFragment<FragmentFaqDetailBinding>() {
|
||||||
}
|
}
|
||||||
|
|
||||||
binding?.answerTextView?.movementMethod = LinkMovementMethod.getInstance()
|
binding?.answerTextView?.movementMethod = LinkMovementMethod.getInstance()
|
||||||
|
binding?.scrollContent?.let { applyScrollContentWindowInsets(it) }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -24,6 +24,7 @@ import com.habitrpg.android.habitica.R
|
||||||
import com.habitrpg.android.habitica.data.FAQRepository
|
import com.habitrpg.android.habitica.data.FAQRepository
|
||||||
import com.habitrpg.android.habitica.databinding.FragmentFaqOverviewBinding
|
import com.habitrpg.android.habitica.databinding.FragmentFaqOverviewBinding
|
||||||
import com.habitrpg.android.habitica.databinding.SupportFaqItemBinding
|
import com.habitrpg.android.habitica.databinding.SupportFaqItemBinding
|
||||||
|
import com.habitrpg.android.habitica.extensions.applyScrollContentWindowInsets
|
||||||
import com.habitrpg.android.habitica.helpers.AppConfigManager
|
import com.habitrpg.android.habitica.helpers.AppConfigManager
|
||||||
import com.habitrpg.android.habitica.ui.fragments.BaseMainFragment
|
import com.habitrpg.android.habitica.ui.fragments.BaseMainFragment
|
||||||
import com.habitrpg.android.habitica.ui.viewmodels.MainUserViewModel
|
import com.habitrpg.android.habitica.ui.viewmodels.MainUserViewModel
|
||||||
|
|
@ -171,6 +172,8 @@ class FAQOverviewFragment : BaseMainFragment<FragmentFaqOverviewBinding>() {
|
||||||
binding?.moreHelpTextView?.movementMethod = LinkMovementMethod.getInstance()
|
binding?.moreHelpTextView?.movementMethod = LinkMovementMethod.getInstance()
|
||||||
|
|
||||||
this.loadArticles()
|
this.loadArticles()
|
||||||
|
|
||||||
|
binding?.scrollContent?.let { applyScrollContentWindowInsets(it) }
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onDestroy() {
|
override fun onDestroy() {
|
||||||
|
|
|
||||||
|
|
@ -10,6 +10,7 @@ import androidx.lifecycle.lifecycleScope
|
||||||
import com.habitrpg.android.habitica.R
|
import com.habitrpg.android.habitica.R
|
||||||
import com.habitrpg.android.habitica.data.FAQRepository
|
import com.habitrpg.android.habitica.data.FAQRepository
|
||||||
import com.habitrpg.android.habitica.databinding.FragmentSupportMainBinding
|
import com.habitrpg.android.habitica.databinding.FragmentSupportMainBinding
|
||||||
|
import com.habitrpg.android.habitica.extensions.applyScrollContentWindowInsets
|
||||||
import com.habitrpg.android.habitica.helpers.AppConfigManager
|
import com.habitrpg.android.habitica.helpers.AppConfigManager
|
||||||
import com.habitrpg.android.habitica.ui.fragments.BaseMainFragment
|
import com.habitrpg.android.habitica.ui.fragments.BaseMainFragment
|
||||||
import com.habitrpg.android.habitica.ui.views.HabiticaSnackbar
|
import com.habitrpg.android.habitica.ui.views.HabiticaSnackbar
|
||||||
|
|
@ -75,6 +76,8 @@ class SupportMainFragment : BaseMainFragment<FragmentSupportMainBinding>() {
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
binding?.resetTutorialButtonWrapper?.let { applyScrollContentWindowInsets(it) }
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onDestroy() {
|
override fun onDestroy() {
|
||||||
|
|
|
||||||
|
|
@ -116,7 +116,7 @@ constructor(
|
||||||
|
|
||||||
ViewCompat.setOnApplyWindowInsetsListener(binding.itemWrapper) { v, windowInsets ->
|
ViewCompat.setOnApplyWindowInsetsListener(binding.itemWrapper) { v, windowInsets ->
|
||||||
val insets = windowInsets.getInsets(WindowInsetsCompat.Type.systemBars())
|
val insets = windowInsets.getInsets(WindowInsetsCompat.Type.systemBars())
|
||||||
v.updatePadding(bottom = insets.bottom)
|
v.updatePadding(bottom = insets.bottom, left = insets.left, right = insets.right)
|
||||||
consumeWindowInsetsAbove30(windowInsets)
|
consumeWindowInsetsAbove30(windowInsets)
|
||||||
}
|
}
|
||||||
binding.addButton.setOnTouchListener { _, event ->
|
binding.addButton.setOnTouchListener { _, event ->
|
||||||
|
|
|
||||||
|
|
@ -1,2 +1,2 @@
|
||||||
NAME=4.7.0
|
NAME=4.7.0
|
||||||
CODE=10351
|
CODE=12351
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue