浏览代码

Remove card backgrounds from browse lists

arkon 4 年之前
父节点
当前提交
a3c598a3e1

+ 0 - 1
app/build.gradle

@@ -234,7 +234,6 @@ dependencies {
     implementation 'eu.davidea:flexible-adapter-ui:1.0.0'
     implementation 'com.nononsenseapps:filepicker:2.5.2'
     implementation 'com.nightlynexus.viewstatepageradapter:viewstatepageradapter:1.1.0'
-    implementation 'com.github.mthli:Slice:v1.3'
     implementation 'com.github.chrisbanes:PhotoView:2.3.0'
     implementation 'com.github.carlosesco:DirectionalViewPager:a844dbca0a'
 

+ 0 - 70
app/src/main/java/eu/kanade/tachiyomi/ui/base/holder/SlicedHolder.kt

@@ -1,70 +0,0 @@
-package eu.kanade.tachiyomi.ui.base.holder
-
-import android.view.View
-import android.view.ViewGroup
-import eu.davidea.flexibleadapter.FlexibleAdapter
-import eu.davidea.flexibleadapter.items.IFlexible
-import eu.davidea.flexibleadapter.items.ISectionable
-import eu.kanade.tachiyomi.util.system.dpToPx
-import io.github.mthli.slice.Slice
-
-interface SlicedHolder {
-
-    val slice: Slice
-
-    val adapter: FlexibleAdapter<IFlexible<*>>
-
-    val viewToSlice: View
-
-    fun setCardEdges(item: ISectionable<*, *>) {
-        // Position of this item in its header. Defaults to 0 when header is null.
-        var position = 0
-
-        // Number of items in the header of this item. Defaults to 1 when header is null.
-        var count = 1
-
-        if (item.header != null) {
-            val sectionItems = adapter.getSectionItems(item.header)
-            position = sectionItems.indexOf(item)
-            count = sectionItems.size
-        }
-
-        when {
-            // Only one item in the card
-            count == 1 -> applySlice(2f, topRect = false, bottomRect = false, topShadow = true, bottomShadow = true)
-            // First item of the card
-            position == 0 -> applySlice(2f, topRect = false, bottomRect = true, topShadow = true, bottomShadow = false)
-            // Last item of the card
-            position == count - 1 -> applySlice(2f, topRect = true, bottomRect = false, topShadow = false, bottomShadow = true)
-            // Middle item
-            else -> applySlice(0f, topRect = false, bottomRect = false, topShadow = false, bottomShadow = false)
-        }
-    }
-
-    private fun applySlice(
-        radius: Float,
-        topRect: Boolean,
-        bottomRect: Boolean,
-        topShadow: Boolean,
-        bottomShadow: Boolean
-    ) {
-        val margin = margin
-
-        slice.setRadius(radius)
-        slice.showLeftTopRect(topRect)
-        slice.showRightTopRect(topRect)
-        slice.showLeftBottomRect(bottomRect)
-        slice.showRightBottomRect(bottomRect)
-        setMargins(margin, if (topShadow) margin else 0, margin, if (bottomShadow) margin else 0)
-    }
-
-    private fun setMargins(left: Int, top: Int, right: Int, bottom: Int) {
-        if (viewToSlice.layoutParams is ViewGroup.MarginLayoutParams) {
-            val p = viewToSlice.layoutParams as ViewGroup.MarginLayoutParams
-            p.setMargins(left, top, right, bottom)
-        }
-    }
-
-    val margin
-        get() = 8.dpToPx
-}

+ 0 - 48
app/src/main/java/eu/kanade/tachiyomi/ui/browse/SourceDividerItemDecoration.kt

@@ -1,48 +0,0 @@
-package eu.kanade.tachiyomi.ui.browse
-
-import android.content.Context
-import android.graphics.Canvas
-import android.graphics.Rect
-import android.graphics.drawable.Drawable
-import android.view.View
-import androidx.core.view.marginBottom
-import androidx.recyclerview.widget.RecyclerView
-
-class SourceDividerItemDecoration(context: Context) : RecyclerView.ItemDecoration() {
-
-    private val divider: Drawable
-
-    init {
-        val a = context.obtainStyledAttributes(intArrayOf(android.R.attr.listDivider))
-        divider = a.getDrawable(0)!!
-        a.recycle()
-    }
-
-    override fun onDraw(c: Canvas, parent: RecyclerView, state: RecyclerView.State) {
-        val childCount = parent.childCount
-        for (i in 0 until childCount - 1) {
-            val child = parent.getChildAt(i)
-            val holder = parent.getChildViewHolder(child)
-            if (holder is SourceListItem &&
-                parent.getChildViewHolder(parent.getChildAt(i + 1)) is SourceListItem
-            ) {
-                val top = child.bottom + child.marginBottom
-                val bottom = top + divider.intrinsicHeight
-                val left = parent.paddingStart + holder.margin
-                val right = parent.width - parent.paddingEnd - holder.margin
-
-                divider.setBounds(left, top, right, bottom)
-                divider.draw(c)
-            }
-        }
-    }
-
-    override fun getItemOffsets(
-        outRect: Rect,
-        view: View,
-        parent: RecyclerView,
-        state: RecyclerView.State
-    ) {
-        outRect.set(0, 0, 0, divider.intrinsicHeight)
-    }
-}

+ 0 - 5
app/src/main/java/eu/kanade/tachiyomi/ui/browse/SourceListItem.kt

@@ -1,5 +0,0 @@
-package eu.kanade.tachiyomi.ui.browse
-
-import eu.kanade.tachiyomi.ui.base.holder.SlicedHolder
-
-interface SourceListItem : SlicedHolder

+ 0 - 2
app/src/main/java/eu/kanade/tachiyomi/ui/browse/extension/ExtensionController.kt

@@ -18,7 +18,6 @@ import eu.kanade.tachiyomi.extension.model.Extension
 import eu.kanade.tachiyomi.ui.base.controller.NucleusController
 import eu.kanade.tachiyomi.ui.base.controller.withFadeTransaction
 import eu.kanade.tachiyomi.ui.browse.BrowseController
-import eu.kanade.tachiyomi.ui.browse.SourceDividerItemDecoration
 import eu.kanade.tachiyomi.ui.browse.extension.details.ExtensionDetailsController
 import kotlinx.coroutines.flow.filter
 import kotlinx.coroutines.flow.launchIn
@@ -76,7 +75,6 @@ open class ExtensionController :
         // Create recycler and set adapter.
         binding.recycler.layoutManager = LinearLayoutManager(view.context)
         binding.recycler.adapter = adapter
-        binding.recycler.addItemDecoration(SourceDividerItemDecoration(view.context))
         adapter?.fastScroller = binding.fastScroller
     }
 

+ 2 - 16
app/src/main/java/eu/kanade/tachiyomi/ui/browse/extension/ExtensionHolder.kt

@@ -6,11 +6,7 @@ import eu.kanade.tachiyomi.data.glide.GlideApp
 import eu.kanade.tachiyomi.extension.model.Extension
 import eu.kanade.tachiyomi.extension.model.InstallStep
 import eu.kanade.tachiyomi.ui.base.holder.BaseFlexibleViewHolder
-import eu.kanade.tachiyomi.ui.base.holder.SlicedHolder
-import eu.kanade.tachiyomi.ui.browse.SourceListItem
 import eu.kanade.tachiyomi.util.system.LocaleHelper
-import io.github.mthli.slice.Slice
-import kotlinx.android.synthetic.main.extension_card_item.card
 import kotlinx.android.synthetic.main.extension_card_item.ext_button
 import kotlinx.android.synthetic.main.extension_card_item.ext_title
 import kotlinx.android.synthetic.main.extension_card_item.image
@@ -18,17 +14,8 @@ import kotlinx.android.synthetic.main.extension_card_item.lang
 import kotlinx.android.synthetic.main.extension_card_item.version
 import kotlinx.android.synthetic.main.extension_card_item.warning
 
-class ExtensionHolder(view: View, override val adapter: ExtensionAdapter) :
-    BaseFlexibleViewHolder(view, adapter),
-    SourceListItem,
-    SlicedHolder {
-
-    override val slice = Slice(card).apply {
-        setColor(adapter.cardBackground)
-    }
-
-    override val viewToSlice: View
-        get() = card
+class ExtensionHolder(view: View, val adapter: ExtensionAdapter) :
+    BaseFlexibleViewHolder(view, adapter) {
 
     init {
         ext_button.setOnClickListener {
@@ -38,7 +25,6 @@ class ExtensionHolder(view: View, override val adapter: ExtensionAdapter) :
 
     fun bind(item: ExtensionItem) {
         val extension = item.extension
-        setCardEdges(item)
 
         ext_title.text = extension.name
         version.text = extension.versionName

+ 0 - 2
app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/manga/MigrationMangaController.kt

@@ -10,7 +10,6 @@ import eu.davidea.flexibleadapter.items.IFlexible
 import eu.kanade.tachiyomi.databinding.MigrationMangaControllerBinding
 import eu.kanade.tachiyomi.ui.base.controller.NucleusController
 import eu.kanade.tachiyomi.ui.base.controller.withFadeTransaction
-import eu.kanade.tachiyomi.ui.browse.SourceDividerItemDecoration
 import eu.kanade.tachiyomi.ui.browse.migration.search.SearchController
 
 class MigrationMangaController :
@@ -54,7 +53,6 @@ class MigrationMangaController :
         adapter = FlexibleAdapter<IFlexible<*>>(null, this)
         binding.recycler.layoutManager = LinearLayoutManager(view.context)
         binding.recycler.adapter = adapter
-        binding.recycler.addItemDecoration(SourceDividerItemDecoration(view.context))
         adapter?.fastScroller = binding.fastScroller
     }
 

+ 0 - 2
app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/sources/MigrationSourcesController.kt

@@ -8,7 +8,6 @@ import eu.davidea.flexibleadapter.FlexibleAdapter
 import eu.kanade.tachiyomi.databinding.MigrationSourcesControllerBinding
 import eu.kanade.tachiyomi.ui.base.controller.NucleusController
 import eu.kanade.tachiyomi.ui.base.controller.withFadeTransaction
-import eu.kanade.tachiyomi.ui.browse.SourceDividerItemDecoration
 import eu.kanade.tachiyomi.ui.browse.migration.manga.MigrationMangaController
 
 class MigrationSourcesController :
@@ -32,7 +31,6 @@ class MigrationSourcesController :
         adapter = SourceAdapter(this)
         binding.recycler.layoutManager = LinearLayoutManager(view.context)
         binding.recycler.adapter = adapter
-        binding.recycler.addItemDecoration(SourceDividerItemDecoration(view.context))
         adapter?.fastScroller = binding.fastScroller
     }
 

+ 2 - 16
app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/sources/SourceHolder.kt

@@ -3,28 +3,14 @@ package eu.kanade.tachiyomi.ui.browse.migration.sources
 import android.view.View
 import eu.kanade.tachiyomi.source.icon
 import eu.kanade.tachiyomi.ui.base.holder.BaseFlexibleViewHolder
-import eu.kanade.tachiyomi.ui.base.holder.SlicedHolder
-import eu.kanade.tachiyomi.ui.browse.SourceListItem
-import io.github.mthli.slice.Slice
-import kotlinx.android.synthetic.main.source_main_controller_card_item.card
 import kotlinx.android.synthetic.main.source_main_controller_card_item.image
 import kotlinx.android.synthetic.main.source_main_controller_card_item.title
 
-class SourceHolder(view: View, override val adapter: SourceAdapter) :
-    BaseFlexibleViewHolder(view, adapter),
-    SourceListItem,
-    SlicedHolder {
-
-    override val slice = Slice(card).apply {
-        setColor(adapter.cardBackground)
-    }
-
-    override val viewToSlice: View
-        get() = card
+class SourceHolder(view: View, val adapter: SourceAdapter) :
+    BaseFlexibleViewHolder(view, adapter) {
 
     fun bind(item: SourceItem) {
         val source = item.source
-        setCardEdges(item)
 
         // Set source name
         title.text = source.name

+ 0 - 2
app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/SourceController.kt

@@ -30,7 +30,6 @@ import eu.kanade.tachiyomi.ui.base.controller.NucleusController
 import eu.kanade.tachiyomi.ui.base.controller.requestPermissionsSafe
 import eu.kanade.tachiyomi.ui.base.controller.withFadeTransaction
 import eu.kanade.tachiyomi.ui.browse.BrowseController
-import eu.kanade.tachiyomi.ui.browse.SourceDividerItemDecoration
 import eu.kanade.tachiyomi.ui.browse.source.browse.BrowseSourceController
 import eu.kanade.tachiyomi.ui.browse.source.globalsearch.GlobalSearchController
 import eu.kanade.tachiyomi.ui.browse.source.latest.LatestUpdatesController
@@ -93,7 +92,6 @@ class SourceController :
         // Create recycler and set adapter.
         binding.recycler.layoutManager = LinearLayoutManager(view.context)
         binding.recycler.adapter = adapter
-        binding.recycler.addItemDecoration(SourceDividerItemDecoration(view.context))
         adapter?.fastScroller = binding.fastScroller
 
         requestPermissionsSafe(arrayOf(WRITE_EXTERNAL_STORAGE), 301)

+ 2 - 16
app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/SourceHolder.kt

@@ -6,28 +6,15 @@ import eu.kanade.tachiyomi.R
 import eu.kanade.tachiyomi.source.LocalSource
 import eu.kanade.tachiyomi.source.icon
 import eu.kanade.tachiyomi.ui.base.holder.BaseFlexibleViewHolder
-import eu.kanade.tachiyomi.ui.base.holder.SlicedHolder
-import eu.kanade.tachiyomi.ui.browse.SourceListItem
 import eu.kanade.tachiyomi.util.system.getResourceColor
 import eu.kanade.tachiyomi.util.view.setVectorCompat
-import io.github.mthli.slice.Slice
-import kotlinx.android.synthetic.main.source_main_controller_card_item.card
 import kotlinx.android.synthetic.main.source_main_controller_card_item.image
 import kotlinx.android.synthetic.main.source_main_controller_card_item.pin
 import kotlinx.android.synthetic.main.source_main_controller_card_item.source_latest
 import kotlinx.android.synthetic.main.source_main_controller_card_item.title
 
-class SourceHolder(private val view: View, override val adapter: SourceAdapter) :
-    BaseFlexibleViewHolder(view, adapter),
-    SourceListItem,
-    SlicedHolder {
-
-    override val slice = Slice(card).apply {
-        setColor(adapter.cardBackground)
-    }
-
-    override val viewToSlice: View
-        get() = card
+class SourceHolder(private val view: View, val adapter: SourceAdapter) :
+    BaseFlexibleViewHolder(view, adapter) {
 
     init {
         source_latest.setOnClickListener {
@@ -41,7 +28,6 @@ class SourceHolder(private val view: View, override val adapter: SourceAdapter)
 
     fun bind(item: SourceItem) {
         val source = item.source
-        setCardEdges(item)
 
         // Set source name
         title.text = source.name

+ 75 - 83
app/src/main/res/layout/extension_card_item.xml

@@ -1,94 +1,86 @@
 <?xml version="1.0" encoding="utf-8"?>
-<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
+<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:app="http://schemas.android.com/apk/res-auto"
     xmlns:tools="http://schemas.android.com/tools"
     android:layout_width="match_parent"
-    android:layout_height="wrap_content">
+    android:layout_height="64dp"
+    android:background="@drawable/list_item_selector_background">
 
-    <androidx.constraintlayout.widget.ConstraintLayout
-        android:id="@+id/card"
-        android:layout_width="match_parent"
-        android:layout_height="64dp"
-        android:background="@drawable/list_item_selector">
+    <ImageView
+        android:id="@+id/image"
+        android:layout_width="0dp"
+        android:layout_height="0dp"
+        android:padding="12dp"
+        app:layout_constraintBottom_toBottomOf="parent"
+        app:layout_constraintDimensionRatio="h,1:1"
+        app:layout_constraintStart_toStartOf="parent"
+        app:layout_constraintTop_toTopOf="parent"
+        tools:src="@mipmap/ic_launcher_round" />
 
-        <ImageView
-            android:id="@+id/image"
-            android:layout_width="0dp"
-            android:layout_height="0dp"
-            android:padding="12dp"
-            app:layout_constraintBottom_toBottomOf="parent"
-            app:layout_constraintDimensionRatio="h,1:1"
-            app:layout_constraintStart_toStartOf="parent"
-            app:layout_constraintTop_toTopOf="parent"
-            tools:src="@mipmap/ic_launcher_round" />
+    <TextView
+        android:id="@+id/ext_title"
+        style="@style/TextAppearance.Regular"
+        android:layout_width="0dp"
+        android:layout_height="wrap_content"
+        android:layout_marginEnd="4dp"
+        android:ellipsize="end"
+        android:maxLines="1"
+        android:textAppearance="@style/TextAppearance.Regular.SubHeading"
+        android:textSize="14sp"
+        app:layout_constraintBottom_toTopOf="@id/lang"
+        app:layout_constraintEnd_toStartOf="@id/ext_button"
+        app:layout_constraintStart_toEndOf="@id/image"
+        app:layout_constraintTop_toTopOf="parent"
+        app:layout_constraintVertical_chainStyle="packed"
+        tools:text="Batoto" />
 
-        <TextView
-            android:id="@+id/ext_title"
-            style="@style/TextAppearance.Regular"
-            android:layout_width="0dp"
-            android:layout_height="wrap_content"
-            android:layout_marginEnd="4dp"
-            android:ellipsize="end"
-            android:maxLines="1"
-            android:textAppearance="@style/TextAppearance.Regular.SubHeading"
-            android:textSize="14sp"
-            app:layout_constraintBottom_toTopOf="@id/lang"
-            app:layout_constraintEnd_toStartOf="@id/ext_button"
-            app:layout_constraintStart_toEndOf="@id/image"
-            app:layout_constraintTop_toTopOf="parent"
-            app:layout_constraintVertical_chainStyle="packed"
-            tools:text="Batoto" />
+    <TextView
+        android:id="@+id/lang"
+        style="@style/TextAppearance.Regular.Body1.Secondary"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:maxLines="1"
+        android:textSize="12sp"
+        app:layout_constraintBottom_toBottomOf="parent"
+        app:layout_constraintStart_toEndOf="@id/image"
+        app:layout_constraintTop_toBottomOf="@+id/ext_title"
+        tools:text="English"
+        tools:visibility="visible" />
 
-        <TextView
-            android:id="@+id/lang"
-            style="@style/TextAppearance.Regular.Body1.Secondary"
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            android:maxLines="1"
-            android:textSize="12sp"
-            app:layout_constraintBottom_toBottomOf="parent"
-            app:layout_constraintStart_toEndOf="@id/image"
-            app:layout_constraintTop_toBottomOf="@+id/ext_title"
-            tools:text="English"
-            tools:visibility="visible" />
+    <TextView
+        android:id="@+id/version"
+        style="@style/TextAppearance.Regular.Body1.Secondary"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_marginStart="4dp"
+        android:maxLines="1"
+        android:textSize="12sp"
+        app:layout_constraintStart_toEndOf="@id/lang"
+        app:layout_constraintTop_toBottomOf="@+id/ext_title"
+        tools:text="Version" />
 
-        <TextView
-            android:id="@+id/version"
-            style="@style/TextAppearance.Regular.Body1.Secondary"
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            android:layout_marginStart="4dp"
-            android:maxLines="1"
-            android:textSize="12sp"
-            app:layout_constraintStart_toEndOf="@id/lang"
-            app:layout_constraintTop_toBottomOf="@+id/ext_title"
-            tools:text="Version" />
+    <TextView
+        android:id="@+id/warning"
+        style="@style/TextAppearance.Regular.Body1.Secondary"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_marginStart="4dp"
+        android:maxLines="1"
+        android:textColor="?attr/colorError"
+        android:textSize="12sp"
+        app:layout_constraintStart_toEndOf="@id/version"
+        app:layout_constraintTop_toBottomOf="@+id/ext_title"
+        tools:text="Warning" />
 
-        <TextView
-            android:id="@+id/warning"
-            style="@style/TextAppearance.Regular.Body1.Secondary"
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            android:layout_marginStart="4dp"
-            android:maxLines="1"
-            android:textColor="?attr/colorError"
-            android:textSize="12sp"
-            app:layout_constraintStart_toEndOf="@id/version"
-            app:layout_constraintTop_toBottomOf="@+id/ext_title"
-            tools:text="Warning" />
-
-        <Button
-            android:id="@+id/ext_button"
-            style="@style/Theme.Widget.Button"
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            android:layout_marginEnd="16dp"
-            app:layout_constraintBottom_toBottomOf="parent"
-            app:layout_constraintEnd_toEndOf="parent"
-            app:layout_constraintTop_toTopOf="parent"
-            tools:text="Details" />
-
-    </androidx.constraintlayout.widget.ConstraintLayout>
-
-</FrameLayout>
+    <Button
+        android:id="@+id/ext_button"
+        style="@style/Theme.Widget.Button"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_marginEnd="16dp"
+        app:layout_constraintBottom_toBottomOf="parent"
+        app:layout_constraintEnd_toEndOf="parent"
+        app:layout_constraintTop_toTopOf="parent"
+        tools:text="Details" />
 
+</androidx.constraintlayout.widget.ConstraintLayout>

+ 3 - 1
app/src/main/res/layout/source_main_controller_card_header.xml

@@ -6,13 +6,15 @@
 
     <TextView
         android:id="@+id/title"
-        style="@style/TextAppearance.Regular.SubHeading"
+        style="@style/TextAppearance.Regular.SubHeading.Secondary"
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
+        android:fontFamily="sans-serif-medium"
         android:paddingStart="@dimen/material_component_text_fields_padding_above_and_below_label"
         android:paddingTop="8dp"
         android:paddingEnd="@dimen/material_component_text_fields_padding_above_and_below_label"
         android:paddingBottom="8dp"
+        android:textAllCaps="true"
         tools:text="Title" />
 
 </FrameLayout>

+ 59 - 65
app/src/main/res/layout/source_main_controller_card_item.xml

@@ -1,74 +1,68 @@
 <?xml version="1.0" encoding="utf-8"?>
-<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
+<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:app="http://schemas.android.com/apk/res-auto"
     xmlns:tools="http://schemas.android.com/tools"
     android:layout_width="match_parent"
-    android:layout_height="wrap_content">
+    android:layout_height="64dp"
+    android:background="@drawable/list_item_selector_background">
 
-    <androidx.constraintlayout.widget.ConstraintLayout
-        android:id="@+id/card"
-        android:layout_width="match_parent"
-        android:layout_height="@dimen/material_component_lists_two_line_height"
-        android:background="@drawable/list_item_selector">
+    <ImageView
+        android:id="@+id/image"
+        android:layout_width="0dp"
+        android:layout_height="0dp"
+        android:paddingStart="16dp"
+        android:paddingEnd="8dp"
+        app:layout_constraintBottom_toBottomOf="parent"
+        app:layout_constraintDimensionRatio="1:1"
+        app:layout_constraintStart_toStartOf="parent"
+        app:layout_constraintTop_toTopOf="parent"
+        tools:ignore="ContentDescription"
+        tools:src="@mipmap/ic_launcher_round" />
 
-        <ImageView
-            android:id="@+id/image"
-            android:layout_width="0dp"
-            android:layout_height="0dp"
-            android:padding="8dp"
-            app:layout_constraintBottom_toBottomOf="parent"
-            app:layout_constraintDimensionRatio="1:1"
-            app:layout_constraintStart_toStartOf="parent"
-            app:layout_constraintTop_toTopOf="parent"
-            tools:ignore="ContentDescription"
-            tools:src="@mipmap/ic_launcher_round" />
+    <TextView
+        android:id="@+id/title"
+        android:layout_width="0dp"
+        android:layout_height="wrap_content"
+        android:ellipsize="end"
+        android:maxLines="1"
+        android:paddingStart="0dp"
+        android:paddingEnd="8dp"
+        android:textAppearance="@style/TextAppearance.Regular.SubHeading"
+        app:layout_constraintBottom_toBottomOf="parent"
+        app:layout_constraintEnd_toStartOf="@+id/source_latest"
+        app:layout_constraintStart_toEndOf="@+id/image"
+        app:layout_constraintTop_toTopOf="parent"
+        tools:text="Source title" />
 
-        <TextView
-            android:id="@+id/title"
-            android:layout_width="0dp"
-            android:layout_height="wrap_content"
-            android:ellipsize="end"
-            android:maxLines="1"
-            android:paddingStart="0dp"
-            android:paddingEnd="8dp"
-            android:textAppearance="@style/TextAppearance.Regular.SubHeading"
-            app:layout_constraintBottom_toBottomOf="parent"
-            app:layout_constraintEnd_toStartOf="@+id/source_latest"
-            app:layout_constraintStart_toEndOf="@+id/image"
-            app:layout_constraintTop_toTopOf="parent"
-            tools:text="Source title" />
+    <Button
+        android:id="@+id/source_latest"
+        style="@style/Theme.Widget.Button"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:maxHeight="48dp"
+        android:minWidth="0dp"
+        android:minHeight="48dp"
+        android:paddingStart="16dp"
+        android:paddingEnd="16dp"
+        android:text="@string/latest"
+        android:visibility="gone"
+        app:layout_constraintBottom_toBottomOf="parent"
+        app:layout_constraintEnd_toStartOf="@+id/pin"
+        app:layout_constraintTop_toTopOf="parent"
+        tools:visibility="visible" />
 
-        <Button
-            android:id="@+id/source_latest"
-            style="@style/Theme.Widget.Button"
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            android:maxHeight="48dp"
-            android:minWidth="0dp"
-            android:minHeight="48dp"
-            android:paddingStart="16dp"
-            android:paddingEnd="16dp"
-            android:text="@string/latest"
-            android:visibility="gone"
-            app:layout_constraintBottom_toBottomOf="parent"
-            app:layout_constraintEnd_toStartOf="@+id/pin"
-            app:layout_constraintTop_toTopOf="parent"
-            tools:visibility="visible" />
+    <ImageButton
+        android:id="@+id/pin"
+        android:layout_width="40dp"
+        android:layout_height="0dp"
+        android:layout_marginEnd="8dp"
+        android:background="?selectableItemBackgroundBorderless"
+        android:contentDescription="@string/action_pin"
+        android:visibility="gone"
+        app:layout_constraintBottom_toBottomOf="parent"
+        app:layout_constraintEnd_toEndOf="parent"
+        app:layout_constraintTop_toTopOf="parent"
+        app:srcCompat="@drawable/ic_push_pin_24dp"
+        tools:visibility="visible" />
 
-        <ImageButton
-            android:id="@+id/pin"
-            android:layout_width="40dp"
-            android:layout_height="0dp"
-            android:layout_marginEnd="8dp"
-            android:background="?selectableItemBackgroundBorderless"
-            android:contentDescription="@string/action_pin"
-            android:visibility="gone"
-            app:layout_constraintBottom_toBottomOf="parent"
-            app:layout_constraintEnd_toEndOf="parent"
-            app:layout_constraintTop_toTopOf="parent"
-            app:srcCompat="@drawable/ic_push_pin_24dp"
-            tools:visibility="visible" />
-
-    </androidx.constraintlayout.widget.ConstraintLayout>
-
-</FrameLayout>
+</androidx.constraintlayout.widget.ConstraintLayout>

+ 1 - 5
app/src/main/res/values/styles.xml

@@ -80,11 +80,7 @@
     </style>
 
     <style name="TextAppearance.Regular.SubHeading">
-        <item name="android:textSize">16sp</item>
-    </style>
-
-    <style name="TextAppearance.Regular.SubHeading.Upper">
-        <item name="android:textAllCaps">true</item>
+        <item name="android:textSize">14sp</item>
     </style>
 
     <style name="TextAppearance.Regular.SubHeading.Secondary">