Replace TagGroup library with Material chips

This commit is contained in:
arkon 2020-03-29 13:58:30 -04:00
parent 879fa484f6
commit 912629c2dc
7 changed files with 36 additions and 26 deletions

View File

@ -212,7 +212,6 @@ dependencies {
implementation 'com.afollestad.material-dialogs:core:0.9.6.0' implementation 'com.afollestad.material-dialogs:core:0.9.6.0'
implementation 'com.nightlynexus.viewstatepageradapter:viewstatepageradapter:1.1.0' implementation 'com.nightlynexus.viewstatepageradapter:viewstatepageradapter:1.1.0'
implementation 'com.github.mthli:Slice:v1.3' implementation 'com.github.mthli:Slice:v1.3'
implementation 'me.gujun.android.taggroup:library:1.4@aar'
implementation 'com.github.chrisbanes:PhotoView:2.3.0' implementation 'com.github.chrisbanes:PhotoView:2.3.0'
implementation 'com.github.carlosesco:DirectionalViewPager:a844dbca0a' implementation 'com.github.carlosesco:DirectionalViewPager:a844dbca0a'

View File

@ -5,9 +5,9 @@ import eu.kanade.tachiyomi.data.database.models.Chapter
import eu.kanade.tachiyomi.data.database.models.Manga import eu.kanade.tachiyomi.data.database.models.Manga
import eu.kanade.tachiyomi.data.download.DownloadStore import eu.kanade.tachiyomi.data.download.DownloadStore
import eu.kanade.tachiyomi.source.model.Page import eu.kanade.tachiyomi.source.model.Page
import java.util.concurrent.CopyOnWriteArrayList
import rx.Observable import rx.Observable
import rx.subjects.PublishSubject import rx.subjects.PublishSubject
import java.util.concurrent.CopyOnWriteArrayList
class DownloadQueue( class DownloadQueue(
private val store: DownloadStore, private val store: DownloadStore,

View File

@ -25,6 +25,7 @@ import com.bumptech.glide.load.engine.DiskCacheStrategy
import com.bumptech.glide.load.resource.bitmap.RoundedCorners import com.bumptech.glide.load.resource.bitmap.RoundedCorners
import com.bumptech.glide.request.target.CustomTarget import com.bumptech.glide.request.target.CustomTarget
import com.bumptech.glide.request.transition.Transition import com.bumptech.glide.request.transition.Transition
import com.google.android.material.chip.Chip
import com.jakewharton.rxbinding.support.v4.widget.refreshes import com.jakewharton.rxbinding.support.v4.widget.refreshes
import com.jakewharton.rxbinding.view.clicks import com.jakewharton.rxbinding.view.clicks
import com.jakewharton.rxbinding.view.longClicks import com.jakewharton.rxbinding.view.longClicks
@ -142,8 +143,6 @@ class MangaInfoController : NucleusController<MangaInfoPresenter>(),
copyToClipboard(view.context.getString(R.string.description), manga_summary.text.toString()) copyToClipboard(view.context.getString(R.string.description), manga_summary.text.toString())
} }
manga_genres_tags.setOnTagClickListener { tag -> performLocalSearch(tag) }
manga_cover.longClicks().subscribeUntilDestroy { manga_cover.longClicks().subscribeUntilDestroy {
copyToClipboard(view.context.getString(R.string.title), presenter.manga.title) copyToClipboard(view.context.getString(R.string.title), presenter.manga.title)
} }
@ -218,8 +217,15 @@ class MangaInfoController : NucleusController<MangaInfoPresenter>(),
manga_source.text = source?.toString() ?: view.context.getString(R.string.unknown) manga_source.text = source?.toString() ?: view.context.getString(R.string.unknown)
// Update genres list // Update genres list
if (manga.genre.isNullOrBlank().not()) { if (!manga.genre.isNullOrBlank()) {
manga_genres_tags.setTags(manga.genre?.split(", ")) manga.genre?.split(", ")?.forEach { genre ->
val chip = Chip(view.context).apply {
text = genre
setOnClickListener { performLocalSearch(genre) }
}
manga_genres_tags.addView(chip)
}
} }
// Update description TextView. // Update description TextView.
@ -258,11 +264,6 @@ class MangaInfoController : NucleusController<MangaInfoPresenter>(),
} }
} }
override fun onDestroyView(view: View) {
manga_genres_tags.setOnTagClickListener(null)
super.onDestroyView(view)
}
/** /**
* Update chapter count TextView. * Update chapter count TextView.
* *

View File

@ -226,17 +226,13 @@
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/manga_summary_label" /> app:layout_constraintTop_toBottomOf="@+id/manga_summary_label" />
<me.gujun.android.taggroup.TagGroup <com.google.android.material.chip.ChipGroup
android:id="@+id/manga_genres_tags" android:id="@+id/manga_genres_tags"
style="@style/TagGroup"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="8dp" android:layout_marginTop="8dp"
android:layout_marginEnd="64dp" android:layout_marginEnd="64dp"
app:atg_backgroundColor="@android:color/transparent" app:chipSpacingHorizontal="4dp"
app:atg_borderColor="@color/md_blue_A400"
app:atg_borderStrokeWidth="1dp"
app:atg_textColor="@color/md_blue_A400"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/manga_summary" /> app:layout_constraintTop_toBottomOf="@+id/manga_summary" />

View File

@ -274,19 +274,15 @@
</androidx.core.widget.NestedScrollView> </androidx.core.widget.NestedScrollView>
<me.gujun.android.taggroup.TagGroup <com.google.android.material.chip.ChipGroup
android:id="@+id/manga_genres_tags" android:id="@+id/manga_genres_tags"
style="@style/TagGroup" android:layout_width="match_parent"
android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginStart="8dp" android:layout_marginStart="16dp"
android:layout_marginTop="8dp" android:layout_marginTop="8dp"
android:layout_marginEnd="8dp" android:layout_marginEnd="16dp"
android:layout_marginBottom="8dp" android:layout_marginBottom="8dp"
app:atg_backgroundColor="@android:color/transparent" app:chipSpacingHorizontal="4dp"
app:atg_borderColor="@color/md_blue_A400"
app:atg_borderStrokeWidth="1dp"
app:atg_textColor="@color/md_blue_A400"
app:layout_constrainedHeight="true" app:layout_constrainedHeight="true"
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"

View File

@ -205,6 +205,22 @@
</style> </style>
<style name="Theme.Widget.Chip" parent="Widget.MaterialComponents.Chip.Action">
<item name="chipStrokeWidth">1dp</item>
<item name="chipStrokeColor">?attr/colorAccent</item>
<item name="chipBackgroundColor">@android:color/transparent</item>
<item name="android:textColor">?attr/colorAccent</item>
<!-- Smaller text/height -->
<item name="chipCornerRadius">12dp</item>
<item name="chipMinHeight">24dp</item>
<item name="android:textAppearance">@style/TextAppearance.Regular.Caption</item>
<!-- Collapse horizontal margin -->
<item name="chipMinTouchTargetSize">30dp</item>
</style>
<!--=======================--> <!--=======================-->
<!--Widgets.TextInputLayout--> <!--Widgets.TextInputLayout-->
<!--=======================--> <!--=======================-->

View File

@ -50,6 +50,7 @@
<item name="preferenceTheme">@style/PreferenceThemeOverlay</item> <item name="preferenceTheme">@style/PreferenceThemeOverlay</item>
<item name="dialogTheme">@style/Theme.AlertDialog.Light</item> <item name="dialogTheme">@style/Theme.AlertDialog.Light</item>
<item name="alertDialogTheme">@style/Theme.AlertDialog.Dark</item> <item name="alertDialogTheme">@style/Theme.AlertDialog.Dark</item>
<item name="chipStyle">@style/Theme.Widget.Chip</item>
<item name="buttonStyle">@style/Theme.Widget.Button.Outlined.Accent</item> <item name="buttonStyle">@style/Theme.Widget.Button.Outlined.Accent</item>
<item name="snackbarButtonStyle">@style/Theme.Widget.Button</item> <item name="snackbarButtonStyle">@style/Theme.Widget.Button</item>
<item name="textAppearanceButton">@style/TextAppearance.Widget.Button</item> <item name="textAppearanceButton">@style/TextAppearance.Widget.Button</item>
@ -128,6 +129,7 @@
<item name="preferenceTheme">@style/PreferenceThemeOverlay</item> <item name="preferenceTheme">@style/PreferenceThemeOverlay</item>
<item name="dialogTheme">@style/Theme.AlertDialog.Dark</item> <item name="dialogTheme">@style/Theme.AlertDialog.Dark</item>
<item name="alertDialogTheme">@style/Theme.AlertDialog.Dark</item> <item name="alertDialogTheme">@style/Theme.AlertDialog.Dark</item>
<item name="chipStyle">@style/Theme.Widget.Chip</item>
<item name="buttonStyle">@style/Theme.Widget.Button.Outlined.Accent</item> <item name="buttonStyle">@style/Theme.Widget.Button.Outlined.Accent</item>
<item name="snackbarButtonStyle">@style/Theme.Widget.Button</item> <item name="snackbarButtonStyle">@style/Theme.Widget.Button</item>
<item name="textAppearanceButton">@style/TextAppearance.Widget.Button</item> <item name="textAppearanceButton">@style/TextAppearance.Widget.Button</item>