diff --git a/Habitica/res/layout/customization_section_footer.xml b/Habitica/res/layout/customization_section_footer.xml
index fb5c3987c..3a01e8159 100644
--- a/Habitica/res/layout/customization_section_footer.xml
+++ b/Habitica/res/layout/customization_section_footer.xml
@@ -4,7 +4,7 @@
android:layout_height="wrap_content"
xmlns:tools="http://schemas.android.com/tools">
\ No newline at end of file
diff --git a/Habitica/res/layout/dialog_hatch_pet_button.xml b/Habitica/res/layout/dialog_hatch_pet_button.xml
index 1fa18d8aa..534f6d62b 100644
--- a/Habitica/res/layout/dialog_hatch_pet_button.xml
+++ b/Habitica/res/layout/dialog_hatch_pet_button.xml
@@ -3,10 +3,11 @@
xmlns:app="http://schemas.android.com/apk/res-auto"
android:orientation="horizontal"
android:layout_width="wrap_content"
+ android:minWidth="220dp"
android:layout_height="60dp"
android:background="@drawable/button_background_primary"
android:gravity="center"
- android:padding="6dp">
+ android:paddingHorizontal="6dp">
\ No newline at end of file
diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/DeathActivity.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/DeathActivity.kt
index 358ab7c21..0d88b5123 100644
--- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/DeathActivity.kt
+++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/DeathActivity.kt
@@ -14,12 +14,12 @@ import com.habitrpg.android.habitica.extensions.fromHtml
import com.habitrpg.android.habitica.extensions.observeOnce
import com.habitrpg.android.habitica.helpers.AdHandler
import com.habitrpg.android.habitica.helpers.AdType
-import com.habitrpg.common.habitica.helpers.Animations
import com.habitrpg.android.habitica.helpers.AppConfigManager
import com.habitrpg.android.habitica.helpers.RxErrorHandler
import com.habitrpg.android.habitica.ui.viewmodels.MainUserViewModel
-import com.habitrpg.android.habitica.ui.views.ads.AdButton
import com.habitrpg.android.habitica.ui.views.HabiticaIconsHelper
+import com.habitrpg.android.habitica.ui.views.ads.AdButton
+import com.habitrpg.common.habitica.helpers.Animations
import com.plattysoft.leonids.ParticleSystem
import javax.inject.Inject
@@ -105,7 +105,7 @@ class DeathActivity: BaseActivity() {
.setSpeedRange(0.01f, 0.03f)
.setFadeOut(4000, AccelerateInterpolator())
.setSpeedModuleAndAngleRange(0.01f, 0.03f, startAngle, startAngle+80)
- .emit(550, 690, 3, 6000)
+ .emit(550, 670, 3, 6000)
}
diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/CustomizationRecyclerViewAdapter.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/CustomizationRecyclerViewAdapter.kt
index 9e06994b9..28a2506d6 100644
--- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/CustomizationRecyclerViewAdapter.kt
+++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/CustomizationRecyclerViewAdapter.kt
@@ -16,6 +16,7 @@ import com.habitrpg.android.habitica.models.inventory.CustomizationSet
import com.habitrpg.android.habitica.models.shops.ShopItem
import com.habitrpg.android.habitica.ui.views.dialogs.HabiticaAlertDialog
import com.habitrpg.android.habitica.ui.views.shops.PurchaseDialog
+import com.habitrpg.common.habitica.extensions.dpToPx
import com.habitrpg.common.habitica.extensions.loadImage
import com.habitrpg.common.habitica.models.Avatar
import com.habitrpg.common.habitica.views.AvatarView
@@ -24,6 +25,7 @@ import io.reactivex.rxjava3.core.Flowable
import io.reactivex.rxjava3.subjects.PublishSubject
import java.util.Date
import java.util.EnumMap
+import kotlin.math.min
class CustomizationRecyclerViewAdapter() : androidx.recyclerview.widget.RecyclerView.Adapter() {
@@ -31,7 +33,8 @@ class CustomizationRecyclerViewAdapter() : androidx.recyclerview.widget.Recycler
var hairColor: String? = null
var avatar: Avatar? = null
var customizationType: String? = null
- var gemBalance: Int = 0
+ var gemBalance = 0
+ var columnCount = 1
var unsortedCustomizations: List = ArrayList()
private var customizationList: MutableList = ArrayList()
var additionalSetItems: List = ArrayList()
@@ -79,6 +82,7 @@ class CustomizationRecyclerViewAdapter() : androidx.recyclerview.widget.Recycler
(holder as SectionViewHolder).bind(obj as CustomizationSet)
} else if (getItemViewType(position) == 1) {
(holder as SectionFooterViewHolder).bind(obj as CustomizationSet)
+ holder.buttonWidth = (min(columnCount, obj.customizations.size) * 76.dpToPx(holder.itemView.context))
} else {
(holder as CustomizationViewHolder).bind(customizationList[position] as Customization)
}
@@ -255,6 +259,14 @@ class CustomizationRecyclerViewAdapter() : androidx.recyclerview.widget.Recycler
var context: Context = itemView.context
private var set: CustomizationSet? = null
+ var buttonWidth: Int
+ get() = binding.purchaseSetButton.width
+ set(value) {
+ val params = binding.purchaseSetButton.layoutParams
+ params.width = value
+ binding.purchaseSetButton.layoutParams = params
+ }
+
init {
binding.purchaseSetButton.setOnClickListener(this)
}
diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/customization/AvatarCustomizationFragment.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/customization/AvatarCustomizationFragment.kt
index 56088fbf2..e6c2e795f 100644
--- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/customization/AvatarCustomizationFragment.kt
+++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/customization/AvatarCustomizationFragment.kt
@@ -11,6 +11,7 @@ import android.view.View
import android.view.ViewGroup
import android.widget.CheckBox
import androidx.core.content.ContextCompat
+import androidx.core.view.doOnLayout
import androidx.swiperefreshlayout.widget.SwipeRefreshLayout
import com.google.android.flexbox.AlignItems
import com.google.android.flexbox.FlexDirection.ROW
@@ -22,7 +23,6 @@ import com.habitrpg.android.habitica.data.CustomizationRepository
import com.habitrpg.android.habitica.data.InventoryRepository
import com.habitrpg.android.habitica.databinding.BottomSheetBackgroundsFilterBinding
import com.habitrpg.android.habitica.databinding.FragmentRefreshRecyclerviewBinding
-import com.habitrpg.common.habitica.extensions.getThemeColor
import com.habitrpg.android.habitica.extensions.setTintWith
import com.habitrpg.android.habitica.helpers.RxErrorHandler
import com.habitrpg.android.habitica.models.CustomizationFilter
@@ -35,6 +35,8 @@ import com.habitrpg.android.habitica.ui.helpers.MarginDecoration
import com.habitrpg.android.habitica.ui.helpers.SafeDefaultItemAnimator
import com.habitrpg.android.habitica.ui.viewmodels.MainUserViewModel
import com.habitrpg.android.habitica.ui.views.dialogs.HabiticaBottomSheetDialog
+import com.habitrpg.common.habitica.extensions.dpToPx
+import com.habitrpg.common.habitica.extensions.getThemeColor
import io.reactivex.rxjava3.core.BackpressureStrategy
import io.reactivex.rxjava3.kotlin.combineLatest
import io.reactivex.rxjava3.subjects.BehaviorSubject
@@ -120,6 +122,10 @@ class AvatarCustomizationFragment :
userViewModel.user.observe(viewLifecycleOwner) { updateUser(it) }
currentFilter.onNext(CustomizationFilter())
+
+ binding?.recyclerView?.doOnLayout {
+ adapter.columnCount = it.width / (80.dpToPx(context))
+ }
}
override fun onDestroy() {
diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/viewHolders/SectionViewHolder.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/viewHolders/SectionViewHolder.kt
index 2df51c4c4..d1e4c021e 100644
--- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/viewHolders/SectionViewHolder.kt
+++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/viewHolders/SectionViewHolder.kt
@@ -1,6 +1,7 @@
package com.habitrpg.android.habitica.ui.viewHolders
import android.content.Context
+import android.view.Gravity
import android.view.View
import android.view.ViewGroup
import android.widget.AdapterView
@@ -61,6 +62,7 @@ class SectionViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
} else {
countPill?.visibility = View.VISIBLE
}
+ label.gravity = Gravity.START
countPill?.text = itemView.context.getString(R.string.pet_ownership_fraction, section.ownedCount, section.totalCount)
}
diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/tasks/form/ReminderItemFormView.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/tasks/form/ReminderItemFormView.kt
index 2a3a179b4..b6a40935a 100644
--- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/tasks/form/ReminderItemFormView.kt
+++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/tasks/form/ReminderItemFormView.kt
@@ -16,10 +16,10 @@ import android.widget.TimePicker
import androidx.core.content.ContextCompat
import com.habitrpg.android.habitica.R
import com.habitrpg.android.habitica.databinding.TaskFormReminderItemBinding
+import com.habitrpg.android.habitica.models.tasks.RemindersItem
import com.habitrpg.common.habitica.extensions.dpToPx
import com.habitrpg.common.habitica.extensions.getThemeColor
import com.habitrpg.common.habitica.extensions.layoutInflater
-import com.habitrpg.android.habitica.models.tasks.RemindersItem
import com.habitrpg.common.habitica.models.tasks.TaskType
import java.text.DateFormat
import java.time.ZonedDateTime
@@ -114,11 +114,12 @@ class ReminderItemFormView @JvmOverloads constructor(
)
timePickerDialog.show()
} else {
+ val zonedDateTime = (item.getZonedDateTime() ?: ZonedDateTime.now())
val timePickerDialog = DatePickerDialog(
context, this,
- ZonedDateTime.now().year,
- ZonedDateTime.now().monthValue,
- ZonedDateTime.now().dayOfMonth
+ zonedDateTime.year,
+ zonedDateTime.monthValue - 1,
+ zonedDateTime.dayOfMonth
)
if ((firstDayOfWeek ?: -1) >= 0) {
timePickerDialog.datePicker.firstDayOfWeek = firstDayOfWeek ?: 0