diff --git a/CHANGELOG.md b/CHANGELOG.md index 34d822b38f..bf9e0d40fd 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,7 +4,8 @@ ### Design & UX 🔳 -* Redesigned authentification flow (#1928) +* Redesigned authentication flow (#1928) +* Dashboard | Fix cards width (#1939) ### Fixes & tech 🚒 diff --git a/app/src/main/java/com/anytypeio/anytype/ui/dashboard/DashboardPager.kt b/app/src/main/java/com/anytypeio/anytype/ui/dashboard/DashboardPager.kt index f447dd25e7..c61e354a86 100644 --- a/app/src/main/java/com/anytypeio/anytype/ui/dashboard/DashboardPager.kt +++ b/app/src/main/java/com/anytypeio/anytype/ui/dashboard/DashboardPager.kt @@ -9,7 +9,7 @@ import androidx.recyclerview.widget.ItemTouchHelper import androidx.recyclerview.widget.RecyclerView import com.anytypeio.anytype.R import com.anytypeio.anytype.core_utils.ext.dimen -import com.anytypeio.anytype.core_utils.ui.EqualSpacingItemDecoration +import com.anytypeio.anytype.core_utils.ui.DashboardSpacingItemDecoration import kotlinx.android.synthetic.main.item_dashboard_page.view.* import kotlinx.android.synthetic.main.item_dashboard_page_archived.view.* import kotlinx.android.synthetic.main.item_dashboard_recent.view.* @@ -41,17 +41,9 @@ class DashboardPager( ViewHolder.Default(parent).apply { itemView.rvDashboard.apply { val spacing = itemView.context.dimen(R.dimen.default_dashboard_item_spacing).toInt() - val decoration = EqualSpacingItemDecoration( - topSpacing = spacing, - leftSpacing = spacing, - rightSpacing = spacing, - bottomSpacing = 0, - displayMode = EqualSpacingItemDecoration.GRID, - ignoreGridEdgesTop = true - ) layoutManager = GridLayoutManager(context, COLUMN_COUNT) overScrollMode = OVER_SCROLL_NEVER - addItemDecoration(decoration) + addItemDecoration(DashboardSpacingItemDecoration(spacing)) setHasFixedSize(true) adapter = defaultAdapter ItemTouchHelper(dndBehavior).attachToRecyclerView(this) @@ -62,17 +54,9 @@ class DashboardPager( ViewHolder.Recent(parent).apply { itemView.rvDashboardRecent.apply { val spacing = itemView.context.dimen(R.dimen.default_dashboard_item_spacing).toInt() - val decoration = EqualSpacingItemDecoration( - topSpacing = spacing, - leftSpacing = spacing, - rightSpacing = spacing, - bottomSpacing = 0, - displayMode = EqualSpacingItemDecoration.GRID, - ignoreGridEdgesTop = true - ) layoutManager = GridLayoutManager(context, COLUMN_COUNT) overScrollMode = OVER_SCROLL_NEVER - addItemDecoration(decoration) + addItemDecoration(DashboardSpacingItemDecoration(spacing)) setHasFixedSize(true) adapter = recentAdapter } @@ -82,17 +66,9 @@ class DashboardPager( ViewHolder.Sets(parent).apply { itemView.rvDashboardSets.apply { val spacing = itemView.context.dimen(R.dimen.default_dashboard_item_spacing).toInt() - val decoration = EqualSpacingItemDecoration( - topSpacing = spacing, - leftSpacing = spacing, - rightSpacing = spacing, - bottomSpacing = 0, - displayMode = EqualSpacingItemDecoration.GRID, - ignoreGridEdgesTop = true - ) layoutManager = GridLayoutManager(context, COLUMN_COUNT) overScrollMode = OVER_SCROLL_NEVER - addItemDecoration(decoration) + addItemDecoration(DashboardSpacingItemDecoration(spacing)) setHasFixedSize(true) adapter = setsAdapter } @@ -102,17 +78,9 @@ class DashboardPager( ViewHolder.Archived(parent).apply { itemView.rvDashboardArchived.apply { val spacing = itemView.context.dimen(R.dimen.default_dashboard_item_spacing).toInt() - val decoration = EqualSpacingItemDecoration( - topSpacing = spacing, - leftSpacing = spacing, - rightSpacing = spacing, - bottomSpacing = 0, - displayMode = EqualSpacingItemDecoration.GRID, - ignoreGridEdgesTop = true - ) layoutManager = GridLayoutManager(context, COLUMN_COUNT) overScrollMode = OVER_SCROLL_NEVER - addItemDecoration(decoration) + addItemDecoration(DashboardSpacingItemDecoration(spacing)) setHasFixedSize(true) adapter = archiveAdapter } @@ -122,17 +90,9 @@ class DashboardPager( ViewHolder.Shared(parent).apply { itemView.rvDashboardShared.apply { val spacing = itemView.context.dimen(R.dimen.default_dashboard_item_spacing).toInt() - val decoration = EqualSpacingItemDecoration( - topSpacing = spacing, - leftSpacing = spacing, - rightSpacing = spacing, - bottomSpacing = 0, - displayMode = EqualSpacingItemDecoration.GRID, - ignoreGridEdgesTop = true - ) layoutManager = GridLayoutManager(context, COLUMN_COUNT) overScrollMode = OVER_SCROLL_NEVER - addItemDecoration(decoration) + addItemDecoration(DashboardSpacingItemDecoration(spacing)) setHasFixedSize(true) adapter = sharedAdapter } diff --git a/app/src/main/res/layout/item_dashboard_page.xml b/app/src/main/res/layout/item_dashboard_page.xml index 1ab95e4e7f..10a5654f47 100644 --- a/app/src/main/res/layout/item_dashboard_page.xml +++ b/app/src/main/res/layout/item_dashboard_page.xml @@ -1,8 +1,6 @@ 50dp - 10dp + 20dp 8dp 28dp diff --git a/core-utils/src/main/java/com/anytypeio/anytype/core_utils/ui/DashboardSpacingItemDecoration.kt b/core-utils/src/main/java/com/anytypeio/anytype/core_utils/ui/DashboardSpacingItemDecoration.kt new file mode 100644 index 0000000000..8aeca86feb --- /dev/null +++ b/core-utils/src/main/java/com/anytypeio/anytype/core_utils/ui/DashboardSpacingItemDecoration.kt @@ -0,0 +1,36 @@ +package com.anytypeio.anytype.core_utils.ui + +import android.graphics.Rect +import android.view.View +import androidx.recyclerview.widget.RecyclerView + +class DashboardSpacingItemDecoration( + private val spacing: Int +) : RecyclerView.ItemDecoration() { + + override fun getItemOffsets( + outRect: Rect, + view: View, + parent: RecyclerView, + state: RecyclerView.State + ) { + val position = parent.getChildAdapterPosition(view) + val column = position % SPAN_COUNT + + if (column == 0) { + outRect.left = spacing - column * spacing / SPAN_COUNT + outRect.right = ((column + 1) * spacing / SPAN_COUNT) / 2 + } + + if (column > 0) { + outRect.left = (spacing - column * spacing / SPAN_COUNT) / 2 + outRect.right = (column + 1) * spacing / SPAN_COUNT + } + + outRect.bottom = spacing / 2 + } + + companion object { + const val SPAN_COUNT = 2 + } +}