From 3d0b69024d9b137a261c1b832ab753c5fce7e2e2 Mon Sep 17 00:00:00 2001 From: Koitharu Date: Sat, 6 May 2023 18:29:51 +0300 Subject: [PATCH] Fix badges offsets --- .../kotatsu/list/ui/adapter/BadgeADUtil.kt | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/app/src/main/java/org/koitharu/kotatsu/list/ui/adapter/BadgeADUtil.kt b/app/src/main/java/org/koitharu/kotatsu/list/ui/adapter/BadgeADUtil.kt index 2ec86a91d..4e598c86b 100644 --- a/app/src/main/java/org/koitharu/kotatsu/list/ui/adapter/BadgeADUtil.kt +++ b/app/src/main/java/org/koitharu/kotatsu/list/ui/adapter/BadgeADUtil.kt @@ -4,6 +4,7 @@ package org.koitharu.kotatsu.list.ui.adapter import android.view.View import androidx.annotation.CheckResult +import androidx.cardview.widget.CardView import androidx.core.view.doOnNextLayout import com.google.android.material.badge.BadgeDrawable import com.google.android.material.badge.BadgeUtils @@ -16,7 +17,7 @@ fun View.bindBadge(badge: BadgeDrawable?, counter: Int): BadgeDrawable? { val badgeDrawable = badge ?: initBadge(this) badgeDrawable.number = counter badgeDrawable.isVisible = true - badgeDrawable.align() + badgeDrawable.align(this) badgeDrawable } else { badge?.isVisible = false @@ -34,12 +35,17 @@ private fun initBadge(anchor: View): BadgeDrawable { badge.maxCharacterCount = resources.getInteger(R.integer.manga_badge_max_character_count) anchor.doOnNextLayout { BadgeUtils.attachBadgeDrawable(badge, it) - badge.align() + badge.align(it) } return badge } -private fun BadgeDrawable.align() { - horizontalOffset = intrinsicWidth - verticalOffset = intrinsicHeight +private fun BadgeDrawable.align(anchor: View) { + val extraOffset = if (anchor is CardView) { + (anchor.radius / 2f).toInt() + } else { + 0 + } + horizontalOffset = intrinsicWidth + extraOffset + verticalOffset = intrinsicHeight + extraOffset }