mirror of
https://github.com/null2264/yokai.git
synced 2025-06-21 10:44:42 +00:00
Stat details: add tracking color/icon + source icon
Also remove card bg of mangaupdates and komga in settings
This commit is contained in:
parent
8897d5c7ef
commit
e6c36a8144
13 changed files with 103 additions and 11 deletions
|
@ -31,6 +31,8 @@ abstract class TrackService(val id: Int) {
|
||||||
@DrawableRes
|
@DrawableRes
|
||||||
abstract fun getLogo(): Int
|
abstract fun getLogo(): Int
|
||||||
|
|
||||||
|
abstract fun getTrackerColor(): Int
|
||||||
|
|
||||||
abstract fun getLogoColor(): Int
|
abstract fun getLogoColor(): Int
|
||||||
|
|
||||||
abstract fun getStatusList(): List<Int>
|
abstract fun getStatusList(): List<Int>
|
||||||
|
|
|
@ -58,6 +58,8 @@ class Anilist(private val context: Context, id: Int) : TrackService(id) {
|
||||||
|
|
||||||
override fun getLogo() = R.drawable.ic_tracker_anilist
|
override fun getLogo() = R.drawable.ic_tracker_anilist
|
||||||
|
|
||||||
|
override fun getTrackerColor() = Color.rgb(2, 169, 255)
|
||||||
|
|
||||||
override fun getLogoColor() = Color.rgb(18, 25, 35)
|
override fun getLogoColor() = Color.rgb(18, 25, 35)
|
||||||
|
|
||||||
override fun getStatusList() = listOf(READING, PLAN_TO_READ, COMPLETED, REREADING, PAUSED, DROPPED)
|
override fun getStatusList() = listOf(READING, PLAN_TO_READ, COMPLETED, REREADING, PAUSED, DROPPED)
|
||||||
|
|
|
@ -77,6 +77,8 @@ class Bangumi(private val context: Context, id: Int) : TrackService(id) {
|
||||||
|
|
||||||
override fun getLogo() = R.drawable.ic_tracker_bangumi
|
override fun getLogo() = R.drawable.ic_tracker_bangumi
|
||||||
|
|
||||||
|
override fun getTrackerColor() = Color.rgb(240, 147, 155)
|
||||||
|
|
||||||
override fun getLogoColor() = Color.rgb(240, 145, 153)
|
override fun getLogoColor() = Color.rgb(240, 145, 153)
|
||||||
|
|
||||||
override fun getStatusList(): List<Int> {
|
override fun getStatusList(): List<Int> {
|
||||||
|
|
|
@ -41,6 +41,8 @@ class Kitsu(private val context: Context, id: Int) : TrackService(id) {
|
||||||
|
|
||||||
override fun getLogo() = R.drawable.ic_tracker_kitsu
|
override fun getLogo() = R.drawable.ic_tracker_kitsu
|
||||||
|
|
||||||
|
override fun getTrackerColor() = Color.rgb(253, 117, 92)
|
||||||
|
|
||||||
override fun getLogoColor() = Color.rgb(51, 37, 50)
|
override fun getLogoColor() = Color.rgb(51, 37, 50)
|
||||||
|
|
||||||
override fun getStatusList(): List<Int> {
|
override fun getStatusList(): List<Int> {
|
||||||
|
|
|
@ -37,7 +37,9 @@ class Komga(private val context: Context, id: Int) : TrackService(id), EnhancedT
|
||||||
|
|
||||||
override fun getLogo() = R.drawable.ic_tracker_komga
|
override fun getLogo() = R.drawable.ic_tracker_komga
|
||||||
|
|
||||||
override fun getLogoColor() = Color.rgb(51, 37, 50)
|
override fun getTrackerColor() = Color.rgb(0, 94, 211)
|
||||||
|
|
||||||
|
override fun getLogoColor() = Color.argb(0, 51, 37, 50)
|
||||||
|
|
||||||
override fun getStatusList() = listOf(UNREAD, READING, COMPLETED)
|
override fun getStatusList() = listOf(UNREAD, READING, COMPLETED)
|
||||||
|
|
||||||
|
|
|
@ -34,7 +34,9 @@ class MangaUpdates(private val context: Context, id: Int) : TrackService(id) {
|
||||||
|
|
||||||
override fun getLogo(): Int = R.drawable.ic_tracker_manga_updates
|
override fun getLogo(): Int = R.drawable.ic_tracker_manga_updates
|
||||||
|
|
||||||
override fun getLogoColor(): Int = Color.rgb(146, 160, 173)
|
override fun getTrackerColor() = Color.rgb(251, 148, 46)
|
||||||
|
|
||||||
|
override fun getLogoColor() = Color.argb(0, 146, 160, 173)
|
||||||
|
|
||||||
override fun getStatusList(): List<Int> {
|
override fun getStatusList(): List<Int> {
|
||||||
return listOf(READING_LIST, COMPLETE_LIST, ON_HOLD_LIST, UNFINISHED_LIST, WISH_LIST)
|
return listOf(READING_LIST, COMPLETE_LIST, ON_HOLD_LIST, UNFINISHED_LIST, WISH_LIST)
|
||||||
|
|
|
@ -27,7 +27,9 @@ class MyAnimeList(private val context: Context, id: Int) : TrackService(id) {
|
||||||
|
|
||||||
override fun getLogo() = R.drawable.ic_tracker_mal
|
override fun getLogo() = R.drawable.ic_tracker_mal
|
||||||
|
|
||||||
override fun getLogoColor() = Color.rgb(46, 81, 162)
|
override fun getTrackerColor() = getLogoColor()
|
||||||
|
|
||||||
|
override fun getLogoColor() = Color.rgb(46, 82, 162)
|
||||||
|
|
||||||
override fun getStatus(status: Int): String = with(context) {
|
override fun getStatus(status: Int): String = with(context) {
|
||||||
when (status) {
|
when (status) {
|
||||||
|
|
|
@ -38,6 +38,8 @@ class Shikimori(private val context: Context, id: Int) : TrackService(id) {
|
||||||
|
|
||||||
override fun getLogo() = R.drawable.ic_tracker_shikimori
|
override fun getLogo() = R.drawable.ic_tracker_shikimori
|
||||||
|
|
||||||
|
override fun getTrackerColor() = Color.rgb(218, 241, 255)
|
||||||
|
|
||||||
override fun getLogoColor() = Color.rgb(40, 40, 40)
|
override fun getLogoColor() = Color.rgb(40, 40, 40)
|
||||||
|
|
||||||
override fun getStatusList(): List<Int> {
|
override fun getStatusList(): List<Int> {
|
||||||
|
|
|
@ -4,6 +4,7 @@ import android.annotation.SuppressLint
|
||||||
import android.content.res.ColorStateList
|
import android.content.res.ColorStateList
|
||||||
import android.view.View
|
import android.view.View
|
||||||
import androidx.constraintlayout.widget.ConstraintLayout
|
import androidx.constraintlayout.widget.ConstraintLayout
|
||||||
|
import androidx.core.graphics.ColorUtils
|
||||||
import androidx.core.view.isVisible
|
import androidx.core.view.isVisible
|
||||||
import androidx.core.view.updateLayoutParams
|
import androidx.core.view.updateLayoutParams
|
||||||
import androidx.core.widget.TextViewCompat
|
import androidx.core.widget.TextViewCompat
|
||||||
|
@ -45,7 +46,8 @@ class TrackHolder(view: View, adapter: TrackAdapter) : BaseViewHolder(view) {
|
||||||
fun bind(item: TrackItem) {
|
fun bind(item: TrackItem) {
|
||||||
val track = item.track
|
val track = item.track
|
||||||
binding.trackLogo.setImageResource(item.service.getLogo())
|
binding.trackLogo.setImageResource(item.service.getLogo())
|
||||||
binding.logoContainer.setBackgroundColor(item.service.getLogoColor())
|
val bgColor = ColorUtils.setAlphaComponent(item.service.getLogoColor(), 255)
|
||||||
|
binding.logoContainer.setBackgroundColor(bgColor)
|
||||||
binding.logoContainer.updateLayoutParams<ConstraintLayout.LayoutParams> {
|
binding.logoContainer.updateLayoutParams<ConstraintLayout.LayoutParams> {
|
||||||
bottomToBottom = if (track != null) binding.divider.id else binding.trackDetails.id
|
bottomToBottom = if (track != null) binding.divider.id else binding.trackDetails.id
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,18 +1,21 @@
|
||||||
package eu.kanade.tachiyomi.ui.more.stats.details
|
package eu.kanade.tachiyomi.ui.more.stats.details
|
||||||
|
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
|
import android.graphics.Color
|
||||||
import android.text.SpannableStringBuilder
|
import android.text.SpannableStringBuilder
|
||||||
import android.view.LayoutInflater
|
import android.view.LayoutInflater
|
||||||
import android.view.View
|
import android.view.View
|
||||||
import android.view.ViewGroup
|
import android.view.ViewGroup
|
||||||
import androidx.core.text.bold
|
import androidx.core.text.bold
|
||||||
import androidx.core.view.isVisible
|
import androidx.core.view.isVisible
|
||||||
|
import androidx.core.view.setPadding
|
||||||
import androidx.recyclerview.widget.RecyclerView
|
import androidx.recyclerview.widget.RecyclerView
|
||||||
import eu.kanade.tachiyomi.R
|
import eu.kanade.tachiyomi.R
|
||||||
import eu.kanade.tachiyomi.databinding.ListStatsDetailsBinding
|
import eu.kanade.tachiyomi.databinding.ListStatsDetailsBinding
|
||||||
import eu.kanade.tachiyomi.ui.more.stats.StatsHelper.getReadDuration
|
import eu.kanade.tachiyomi.ui.more.stats.StatsHelper.getReadDuration
|
||||||
import eu.kanade.tachiyomi.ui.more.stats.details.StatsDetailsPresenter.Stats
|
import eu.kanade.tachiyomi.ui.more.stats.details.StatsDetailsPresenter.Stats
|
||||||
import eu.kanade.tachiyomi.ui.more.stats.details.StatsDetailsPresenter.StatsData
|
import eu.kanade.tachiyomi.ui.more.stats.details.StatsDetailsPresenter.StatsData
|
||||||
|
import eu.kanade.tachiyomi.util.system.dpToPx
|
||||||
import eu.kanade.tachiyomi.util.system.getResourceColor
|
import eu.kanade.tachiyomi.util.system.getResourceColor
|
||||||
import eu.kanade.tachiyomi.util.system.roundToTwoDecimal
|
import eu.kanade.tachiyomi.util.system.roundToTwoDecimal
|
||||||
|
|
||||||
|
@ -52,6 +55,16 @@ class StatsDetailsAdapter(
|
||||||
item.color ?: context.getResourceColor(R.attr.colorOnBackground),
|
item.color ?: context.getResourceColor(R.attr.colorOnBackground),
|
||||||
)
|
)
|
||||||
holder.statsLabelText.text = item.label
|
holder.statsLabelText.text = item.label
|
||||||
|
if (item.iconRes != null) {
|
||||||
|
holder.statslogoContainer.isVisible = true
|
||||||
|
item.iconBGColor?.let { holder.statslogoContainer.setCardBackgroundColor(it) }
|
||||||
|
val padding =
|
||||||
|
if (Color.alpha(item.iconBGColor ?: Color.TRANSPARENT) == 0) 0 else 2.dpToPx
|
||||||
|
holder.statslogoIcon.setPadding(padding)
|
||||||
|
holder.statslogoIcon.setImageResource(item.iconRes!!)
|
||||||
|
} else {
|
||||||
|
holder.statslogoContainer.isVisible = false
|
||||||
|
}
|
||||||
holder.statsCountText.text = getCountText(item)
|
holder.statsCountText.text = getCountText(item)
|
||||||
holder.statsCountPercentageText.text = getCountPercentageText(item)
|
holder.statsCountPercentageText.text = getCountPercentageText(item)
|
||||||
holder.statsProgressText.text = getProgressText(item)
|
holder.statsProgressText.text = getProgressText(item)
|
||||||
|
@ -93,6 +106,14 @@ class StatsDetailsAdapter(
|
||||||
item.color ?: context.getResourceColor(R.attr.colorOnBackground),
|
item.color ?: context.getResourceColor(R.attr.colorOnBackground),
|
||||||
)
|
)
|
||||||
holder.statsLabelText.text = item.label
|
holder.statsLabelText.text = item.label
|
||||||
|
if (item.icon != null) {
|
||||||
|
holder.statslogoContainer.isVisible = true
|
||||||
|
holder.statslogoContainer.setCardBackgroundColor(Color.TRANSPARENT)
|
||||||
|
holder.statslogoIcon.setImageDrawable(item.icon!!)
|
||||||
|
holder.statslogoIcon.setPadding(0)
|
||||||
|
} else {
|
||||||
|
holder.statslogoContainer.isVisible = false
|
||||||
|
}
|
||||||
holder.statsCountText.text = getCountText(item)
|
holder.statsCountText.text = getCountText(item)
|
||||||
holder.statsCountPercentageText.text = getCountPercentageText(item)
|
holder.statsCountPercentageText.text = getCountPercentageText(item)
|
||||||
holder.statsProgressText.text = getProgressText(item)
|
holder.statsProgressText.text = getProgressText(item)
|
||||||
|
@ -168,5 +189,7 @@ class StatsDetailsAdapter(
|
||||||
val statsDataLayout = binding.statsDataLayout
|
val statsDataLayout = binding.statsDataLayout
|
||||||
val statsScoreStarImage = binding.statsScoreStarImage
|
val statsScoreStarImage = binding.statsScoreStarImage
|
||||||
val statsSublabelText = binding.statsSublabelText
|
val statsSublabelText = binding.statsSublabelText
|
||||||
|
val statslogoContainer = binding.logoContainer
|
||||||
|
val statslogoIcon = binding.logoIcon
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,5 +1,7 @@
|
||||||
package eu.kanade.tachiyomi.ui.more.stats.details
|
package eu.kanade.tachiyomi.ui.more.stats.details
|
||||||
|
|
||||||
|
import android.graphics.drawable.Drawable
|
||||||
|
import androidx.annotation.DrawableRes
|
||||||
import eu.kanade.tachiyomi.R
|
import eu.kanade.tachiyomi.R
|
||||||
import eu.kanade.tachiyomi.data.database.DatabaseHelper
|
import eu.kanade.tachiyomi.data.database.DatabaseHelper
|
||||||
import eu.kanade.tachiyomi.data.database.models.Category
|
import eu.kanade.tachiyomi.data.database.models.Category
|
||||||
|
@ -13,6 +15,7 @@ import eu.kanade.tachiyomi.data.track.TrackManager
|
||||||
import eu.kanade.tachiyomi.source.LocalSource
|
import eu.kanade.tachiyomi.source.LocalSource
|
||||||
import eu.kanade.tachiyomi.source.Source
|
import eu.kanade.tachiyomi.source.Source
|
||||||
import eu.kanade.tachiyomi.source.SourceManager
|
import eu.kanade.tachiyomi.source.SourceManager
|
||||||
|
import eu.kanade.tachiyomi.source.icon
|
||||||
import eu.kanade.tachiyomi.ui.more.stats.StatsHelper
|
import eu.kanade.tachiyomi.ui.more.stats.StatsHelper
|
||||||
import eu.kanade.tachiyomi.util.isLocal
|
import eu.kanade.tachiyomi.util.isLocal
|
||||||
import eu.kanade.tachiyomi.util.mapSeriesType
|
import eu.kanade.tachiyomi.util.mapSeriesType
|
||||||
|
@ -230,12 +233,14 @@ class StatsDetailsPresenter(
|
||||||
val label = context.getString(service?.nameRes() ?: R.string.not_tracked)
|
val label = context.getString(service?.nameRes() ?: R.string.not_tracked)
|
||||||
currentStats?.add(
|
currentStats?.add(
|
||||||
StatsData(
|
StatsData(
|
||||||
color = pieColorList[currentStats?.size!!],
|
color = service?.getTrackerColor() ?: pieColorList.first(),
|
||||||
count = mangaAndTrack.count(),
|
count = mangaAndTrack.count(),
|
||||||
meanScore = mangaAndTrack.map { it.second }.getMeanScoreByTracker()?.roundToTwoDecimal(),
|
meanScore = mangaAndTrack.map { it.second }.getMeanScoreByTracker()?.roundToTwoDecimal(),
|
||||||
chaptersRead = mangaAndTrack.sumOf { it.first.read },
|
chaptersRead = mangaAndTrack.sumOf { it.first.read },
|
||||||
totalChapters = mangaAndTrack.sumOf { it.first.totalChapters },
|
totalChapters = mangaAndTrack.sumOf { it.first.totalChapters },
|
||||||
label = label.uppercase(),
|
label = label.uppercase(),
|
||||||
|
iconRes = service?.getLogo(),
|
||||||
|
iconBGColor = service?.getLogoColor(),
|
||||||
readDuration = mangaAndTrack.map { it.first }.getReadDuration(),
|
readDuration = mangaAndTrack.map { it.first }.getReadDuration(),
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
|
@ -247,8 +252,9 @@ class StatsDetailsPresenter(
|
||||||
currentStats = ArrayList()
|
currentStats = ArrayList()
|
||||||
val libraryFormat = mangasDistinct.filterByChip().groupBy { it.source }
|
val libraryFormat = mangasDistinct.filterByChip().groupBy { it.source }
|
||||||
|
|
||||||
libraryFormat.forEach { (source, mangaList) ->
|
libraryFormat.forEach { (sourceId, mangaList) ->
|
||||||
val sourceName = sources.find { it.id == source }?.toString() ?: source.toString()
|
val source = sources.find { it.id == sourceId }
|
||||||
|
val sourceName = source?.toString() ?: sourceId.toString()
|
||||||
currentStats?.add(
|
currentStats?.add(
|
||||||
StatsData(
|
StatsData(
|
||||||
color = pieColorList[1],
|
color = pieColorList[1],
|
||||||
|
@ -257,6 +263,7 @@ class StatsDetailsPresenter(
|
||||||
chaptersRead = mangaList.sumOf { it.read },
|
chaptersRead = mangaList.sumOf { it.read },
|
||||||
totalChapters = mangaList.sumOf { it.totalChapters },
|
totalChapters = mangaList.sumOf { it.totalChapters },
|
||||||
label = sourceName.uppercase(),
|
label = sourceName.uppercase(),
|
||||||
|
icon = source?.icon(),
|
||||||
readDuration = mangaList.getReadDuration(),
|
readDuration = mangaList.getReadDuration(),
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
|
@ -273,7 +280,7 @@ class StatsDetailsPresenter(
|
||||||
val label = categories.find { it.id == category }?.name ?: context.getString(R.string.default_value)
|
val label = categories.find { it.id == category }?.name ?: context.getString(R.string.default_value)
|
||||||
currentStats?.add(
|
currentStats?.add(
|
||||||
StatsData(
|
StatsData(
|
||||||
color = pieColorList[currentStats?.size!! % 12],
|
color = pieColorList[currentStats?.size!! % pieColorList.size],
|
||||||
count = mangaList.count(),
|
count = mangaList.count(),
|
||||||
meanScore = mangaList.getMeanScoreRounded(),
|
meanScore = mangaList.getMeanScoreRounded(),
|
||||||
chaptersRead = mangaList.sumOf { it.read },
|
chaptersRead = mangaList.sumOf { it.read },
|
||||||
|
@ -582,6 +589,10 @@ class StatsDetailsPresenter(
|
||||||
val chaptersRead: Int = 0,
|
val chaptersRead: Int = 0,
|
||||||
val totalChapters: Int = 0,
|
val totalChapters: Int = 0,
|
||||||
var label: String? = null,
|
var label: String? = null,
|
||||||
|
@DrawableRes
|
||||||
|
var iconRes: Int? = null,
|
||||||
|
var iconBGColor: Int? = null,
|
||||||
|
var icon: Drawable? = null,
|
||||||
var subLabel: String? = null,
|
var subLabel: String? = null,
|
||||||
var readDuration: Long = 0,
|
var readDuration: Long = 0,
|
||||||
)
|
)
|
||||||
|
|
|
@ -6,10 +6,12 @@ import android.util.AttributeSet
|
||||||
import android.widget.ImageView
|
import android.widget.ImageView
|
||||||
import androidx.annotation.ColorInt
|
import androidx.annotation.ColorInt
|
||||||
import androidx.core.view.isVisible
|
import androidx.core.view.isVisible
|
||||||
|
import androidx.core.view.setPadding
|
||||||
import androidx.preference.Preference
|
import androidx.preference.Preference
|
||||||
import androidx.preference.PreferenceViewHolder
|
import androidx.preference.PreferenceViewHolder
|
||||||
import com.google.android.material.card.MaterialCardView
|
import com.google.android.material.card.MaterialCardView
|
||||||
import eu.kanade.tachiyomi.R
|
import eu.kanade.tachiyomi.R
|
||||||
|
import eu.kanade.tachiyomi.util.system.dpToPx
|
||||||
|
|
||||||
class TrackerPreference @JvmOverloads constructor(context: Context, attrs: AttributeSet? = null) :
|
class TrackerPreference @JvmOverloads constructor(context: Context, attrs: AttributeSet? = null) :
|
||||||
Preference(context, attrs) {
|
Preference(context, attrs) {
|
||||||
|
@ -25,6 +27,8 @@ class TrackerPreference @JvmOverloads constructor(context: Context, attrs: Attri
|
||||||
val checkedIcon = holder.findViewById(R.id.checked_icon) as ImageView
|
val checkedIcon = holder.findViewById(R.id.checked_icon) as ImageView
|
||||||
|
|
||||||
logoContainer.setCardBackgroundColor(iconColor)
|
logoContainer.setCardBackgroundColor(iconColor)
|
||||||
|
val padding = if (Color.alpha(iconColor) == 0) 0 else 4.dpToPx
|
||||||
|
holder.findViewById(android.R.id.icon).setPadding(padding)
|
||||||
checkedIcon.isVisible = !getPersistedString("").isNullOrEmpty()
|
checkedIcon.isVisible = !getPersistedString("").isNullOrEmpty()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -53,16 +53,47 @@
|
||||||
|
|
||||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||||
|
|
||||||
<LinearLayout
|
<androidx.constraintlayout.widget.ConstraintLayout
|
||||||
android:id="@+id/stats_label_sublayout"
|
android:id="@+id/stats_label_sublayout"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:orientation="vertical"
|
android:orientation="vertical"
|
||||||
android:gravity="center_vertical">
|
android:gravity="center_vertical">
|
||||||
|
|
||||||
|
<com.google.android.material.card.MaterialCardView
|
||||||
|
android:id="@+id/logo_container"
|
||||||
|
android:layout_width="24sp"
|
||||||
|
android:layout_height="24sp"
|
||||||
|
android:layout_marginEnd="6dp"
|
||||||
|
android:visibility="gone"
|
||||||
|
tools:visibility="visible"
|
||||||
|
app:cardBackgroundColor="#2E51A2"
|
||||||
|
app:cardCornerRadius="4dp"
|
||||||
|
app:cardElevation="0dp"
|
||||||
|
app:layout_constraintEnd_toStartOf="@id/stats_label_text"
|
||||||
|
app:layout_constraintHorizontal_bias="0.0"
|
||||||
|
app:layout_constraintHorizontal_chainStyle="packed"
|
||||||
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
|
app:layout_constraintTop_toTopOf="parent"
|
||||||
|
app:strokeWidth="0dp">
|
||||||
|
|
||||||
|
<ImageView
|
||||||
|
android:id="@+id/logo_icon"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="match_parent"
|
||||||
|
android:importantForAccessibility="no"
|
||||||
|
android:padding="2dp"
|
||||||
|
tools:src="@drawable/ic_tracker_mal" />
|
||||||
|
|
||||||
|
</com.google.android.material.card.MaterialCardView>
|
||||||
|
|
||||||
<com.google.android.material.textview.MaterialTextView
|
<com.google.android.material.textview.MaterialTextView
|
||||||
android:id="@+id/stats_label_text"
|
android:id="@+id/stats_label_text"
|
||||||
style="?textAppearanceLabelLarge"
|
style="?textAppearanceLabelLarge"
|
||||||
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
|
app:layout_constraintTop_toTopOf="parent"
|
||||||
|
app:layout_constraintStart_toEndOf="@id/logo_container"
|
||||||
|
app:layout_constraintBottom_toTopOf="@id/stats_sublabel_text"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
tools:text="MANGA" />
|
tools:text="MANGA" />
|
||||||
|
@ -70,11 +101,16 @@
|
||||||
<com.google.android.material.textview.MaterialTextView
|
<com.google.android.material.textview.MaterialTextView
|
||||||
android:id="@+id/stats_sublabel_text"
|
android:id="@+id/stats_sublabel_text"
|
||||||
style="?textAppearanceLabelMedium"
|
style="?textAppearanceLabelMedium"
|
||||||
android:layout_marginTop="5dp"
|
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginTop="5dp"
|
||||||
|
app:layout_constraintBottom_toBottomOf="parent"
|
||||||
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
|
app:layout_constraintHorizontal_bias="0.0"
|
||||||
|
app:layout_constraintStart_toStartOf="@id/stats_label_text"
|
||||||
|
app:layout_constraintTop_toBottomOf="@id/stats_label_text"
|
||||||
tools:text="Mangadex (FR)" />
|
tools:text="Mangadex (FR)" />
|
||||||
</LinearLayout>
|
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||||
|
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue