Fix badges offsets

pull/359/head
Koitharu 3 years ago
parent 12e9fb5aab
commit 3d0b69024d
No known key found for this signature in database
GPG Key ID: 8E861F8CE6E7CE27

@ -4,6 +4,7 @@ package org.koitharu.kotatsu.list.ui.adapter
import android.view.View import android.view.View
import androidx.annotation.CheckResult import androidx.annotation.CheckResult
import androidx.cardview.widget.CardView
import androidx.core.view.doOnNextLayout import androidx.core.view.doOnNextLayout
import com.google.android.material.badge.BadgeDrawable import com.google.android.material.badge.BadgeDrawable
import com.google.android.material.badge.BadgeUtils import com.google.android.material.badge.BadgeUtils
@ -16,7 +17,7 @@ fun View.bindBadge(badge: BadgeDrawable?, counter: Int): BadgeDrawable? {
val badgeDrawable = badge ?: initBadge(this) val badgeDrawable = badge ?: initBadge(this)
badgeDrawable.number = counter badgeDrawable.number = counter
badgeDrawable.isVisible = true badgeDrawable.isVisible = true
badgeDrawable.align() badgeDrawable.align(this)
badgeDrawable badgeDrawable
} else { } else {
badge?.isVisible = false badge?.isVisible = false
@ -34,12 +35,17 @@ private fun initBadge(anchor: View): BadgeDrawable {
badge.maxCharacterCount = resources.getInteger(R.integer.manga_badge_max_character_count) badge.maxCharacterCount = resources.getInteger(R.integer.manga_badge_max_character_count)
anchor.doOnNextLayout { anchor.doOnNextLayout {
BadgeUtils.attachBadgeDrawable(badge, it) BadgeUtils.attachBadgeDrawable(badge, it)
badge.align() badge.align(it)
} }
return badge return badge
} }
private fun BadgeDrawable.align() { private fun BadgeDrawable.align(anchor: View) {
horizontalOffset = intrinsicWidth val extraOffset = if (anchor is CardView) {
verticalOffset = intrinsicHeight (anchor.radius / 2f).toInt()
} else {
0
}
horizontalOffset = intrinsicWidth + extraOffset
verticalOffset = intrinsicHeight + extraOffset
} }

Loading…
Cancel
Save