修复详情页书籍简介下部分被裁剪,更新界面
This commit is contained in:
3 files changed
+131
-83
No files matched your search
@@ -160,9 +160,12 @@ class BookInfoActivity :
|
|||||||
}
|
}
|
||||||
|
|
||||||
private var surfaceFinalColor: Int = 0
|
private var surfaceFinalColor: Int = 0
|
||||||
|
private var surfaceContainerFinalColor: Int = 0
|
||||||
private var secondaryFinalColor: Int = 0
|
private var secondaryFinalColor: Int = 0
|
||||||
private var onSurfaceFinalColor: Int = 0
|
private var onSurfaceFinalColor: Int = 0
|
||||||
private var secondaryContainerFinalColor: Int = 0
|
private var secondaryContainerFinalColor: Int = 0
|
||||||
|
private var primaryFinalColor: Int = 0
|
||||||
|
private var tertiaryFinalColor: Int = 0
|
||||||
private var currentJob: Job? = null
|
private var currentJob: Job? = null
|
||||||
private var wrappedContext: Context? = null
|
private var wrappedContext: Context? = null
|
||||||
private var chapterChanged = false
|
private var chapterChanged = false
|
||||||
@@ -190,17 +193,38 @@ class BookInfoActivity :
|
|||||||
MaterialColors.getColor(this, com.google.android.material.R.attr.colorSecondary, -1)
|
MaterialColors.getColor(this, com.google.android.material.R.attr.colorSecondary, -1)
|
||||||
onSurfaceFinalColor =
|
onSurfaceFinalColor =
|
||||||
MaterialColors.getColor(this, com.google.android.material.R.attr.colorOnSurface, -1)
|
MaterialColors.getColor(this, com.google.android.material.R.attr.colorOnSurface, -1)
|
||||||
|
surfaceContainerFinalColor = MaterialColors.getColor(
|
||||||
|
this,
|
||||||
|
com.google.android.material.R.attr.colorSurfaceContainer,
|
||||||
|
-1
|
||||||
|
)
|
||||||
secondaryContainerFinalColor = MaterialColors.getColor(
|
secondaryContainerFinalColor = MaterialColors.getColor(
|
||||||
this,
|
this,
|
||||||
com.google.android.material.R.attr.colorSecondaryContainer,
|
com.google.android.material.R.attr.colorSecondaryContainer,
|
||||||
-1
|
-1
|
||||||
)
|
)
|
||||||
|
primaryFinalColor = MaterialColors.getColor(
|
||||||
|
this,
|
||||||
|
androidx.appcompat.R.attr.colorPrimary,
|
||||||
|
-1
|
||||||
|
)
|
||||||
|
tertiaryFinalColor = MaterialColors.getColor(
|
||||||
|
this,
|
||||||
|
com.google.android.material.R.attr.colorTertiary,
|
||||||
|
-1
|
||||||
|
)
|
||||||
binding.cdCov.transitionName = intent.getStringExtra("transitionName")
|
binding.cdCov.transitionName = intent.getStringExtra("transitionName")
|
||||||
binding.cdCov.doOnPreDraw {
|
binding.cdCov.doOnPreDraw {
|
||||||
startPostponedEnterTransition()
|
startPostponedEnterTransition()
|
||||||
}
|
}
|
||||||
setSupportActionBar(binding.topBar)
|
setSupportActionBar(binding.topBar)
|
||||||
binding.llRead?.applyNavigationBarMargin()
|
|
||||||
|
binding.scrollView.setOnScrollChangeListener { _, _, scrollY, _, oldScrollY ->
|
||||||
|
if (scrollY > oldScrollY) binding.btnRead.shrink()
|
||||||
|
else if (scrollY < oldScrollY) binding.btnRead.extend()
|
||||||
|
}
|
||||||
|
|
||||||
|
binding.btnRead.applyNavigationBarMargin()
|
||||||
binding.btnShelf.text = getString(R.string.remove_from_bookshelf)
|
binding.btnShelf.text = getString(R.string.remove_from_bookshelf)
|
||||||
binding.tvToc.text = getString(R.string.toc_s, getString(R.string.loading))
|
binding.tvToc.text = getString(R.string.toc_s, getString(R.string.loading))
|
||||||
|
|
||||||
@@ -480,7 +504,8 @@ class BookInfoActivity :
|
|||||||
private suspend fun applyColorScheme() {
|
private suspend fun applyColorScheme() {
|
||||||
val ctx = wrappedContext ?: this
|
val ctx = wrappedContext ?: this
|
||||||
|
|
||||||
val colorPrimary = MaterialColors.getColor(ctx, androidx.appcompat.R.attr.colorPrimary, -1)
|
val colorPrimary =
|
||||||
|
MaterialColors.getColor(ctx, androidx.appcompat.R.attr.colorPrimary, -1)
|
||||||
val colorSecondary =
|
val colorSecondary =
|
||||||
MaterialColors.getColor(ctx, com.google.android.material.R.attr.colorSecondary, -1)
|
MaterialColors.getColor(ctx, com.google.android.material.R.attr.colorSecondary, -1)
|
||||||
val colorTertiary =
|
val colorTertiary =
|
||||||
@@ -489,16 +514,18 @@ class BookInfoActivity :
|
|||||||
MaterialColors.getColor(ctx, com.google.android.material.R.attr.colorOnSurface, -1)
|
MaterialColors.getColor(ctx, com.google.android.material.R.attr.colorOnSurface, -1)
|
||||||
val colorSurface =
|
val colorSurface =
|
||||||
MaterialColors.getColor(ctx, com.google.android.material.R.attr.colorSurface, -1)
|
MaterialColors.getColor(ctx, com.google.android.material.R.attr.colorSurface, -1)
|
||||||
val colorSurfaceContainer = MaterialColors.getColor(
|
val colorSurfaceContainer =
|
||||||
ctx,
|
MaterialColors.getColor(
|
||||||
com.google.android.material.R.attr.colorSurfaceContainer,
|
ctx,
|
||||||
-1
|
com.google.android.material.R.attr.colorSurfaceContainerHighest,
|
||||||
)
|
-1
|
||||||
val colorSecondaryContainer = MaterialColors.getColor(
|
)
|
||||||
ctx,
|
val colorSecondaryContainer =
|
||||||
com.google.android.material.R.attr.colorSecondaryContainer,
|
MaterialColors.getColor(
|
||||||
-1
|
ctx,
|
||||||
)
|
com.google.android.material.R.attr.colorSecondaryContainer,
|
||||||
|
-1
|
||||||
|
)
|
||||||
|
|
||||||
val surfaceTransition = ValueAnimator.ofArgb(surfaceFinalColor, colorSurface).apply {
|
val surfaceTransition = ValueAnimator.ofArgb(surfaceFinalColor, colorSurface).apply {
|
||||||
duration = 400L
|
duration = 400L
|
||||||
@@ -506,9 +533,21 @@ class BookInfoActivity :
|
|||||||
val color = animation.animatedValue as Int
|
val color = animation.animatedValue as Int
|
||||||
binding.cdInfo?.setCardBackgroundColor(color)
|
binding.cdInfo?.setCardBackgroundColor(color)
|
||||||
binding.llInfo.setBackgroundColor(color)
|
binding.llInfo.setBackgroundColor(color)
|
||||||
|
(binding.llCover.background as? GradientDrawable)?.colors =
|
||||||
|
intArrayOf(Color.TRANSPARENT, color)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
val surfaceContainerTransition =
|
||||||
|
ValueAnimator.ofArgb(surfaceContainerFinalColor, colorSurfaceContainer).apply {
|
||||||
|
duration = 400L
|
||||||
|
addUpdateListener { animation ->
|
||||||
|
val color = animation.animatedValue as Int
|
||||||
|
binding.lbKind.applyColorScheme(color, colorOnSurface)
|
||||||
|
binding.collTopBar.setContentScrimColor(color)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
val buttonTransition = ValueAnimator.ofArgb(secondaryFinalColor, colorSecondary).apply {
|
val buttonTransition = ValueAnimator.ofArgb(secondaryFinalColor, colorSecondary).apply {
|
||||||
duration = 400L
|
duration = 400L
|
||||||
addUpdateListener { animation ->
|
addUpdateListener { animation ->
|
||||||
@@ -523,6 +562,8 @@ class BookInfoActivity :
|
|||||||
btn.setTextColor(color)
|
btn.setTextColor(color)
|
||||||
btn.iconTint = tint
|
btn.iconTint = tint
|
||||||
}
|
}
|
||||||
|
binding.div.setTextColor(color)
|
||||||
|
binding.tvChapterIndex.setTextColor(color)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -543,33 +584,48 @@ class BookInfoActivity :
|
|||||||
binding.tvAuthor.setTextColor(color)
|
binding.tvAuthor.setTextColor(color)
|
||||||
binding.tvOrigin.setTextColor(color)
|
binding.tvOrigin.setTextColor(color)
|
||||||
binding.tvDetail.setTextColor(color)
|
binding.tvDetail.setTextColor(color)
|
||||||
|
binding.tvToc.setTextColor(color)
|
||||||
|
binding.tvLasted.setTextColor(color)
|
||||||
binding.ivName.imageTintList = ColorStateList.valueOf(color)
|
binding.ivName.imageTintList = ColorStateList.valueOf(color)
|
||||||
binding.ivWeb.imageTintList = ColorStateList.valueOf(color)
|
binding.ivWeb.imageTintList = ColorStateList.valueOf(color)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
val primaryTransition = ValueAnimator.ofArgb(primaryFinalColor, colorPrimary).apply {
|
||||||
|
duration = 400L
|
||||||
|
addUpdateListener { animation ->
|
||||||
|
val color = animation.animatedValue as Int
|
||||||
|
binding.tvChapter.setTextColor(color)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
val tertiaryTransition = ValueAnimator.ofArgb(tertiaryFinalColor, colorTertiary).apply {
|
||||||
|
duration = 400L
|
||||||
|
addUpdateListener { animation ->
|
||||||
|
val color = animation.animatedValue as Int
|
||||||
|
binding.btnRead.setBackgroundColor(color)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
withContext(Dispatchers.Main) {
|
withContext(Dispatchers.Main) {
|
||||||
surfaceTransition.start()
|
listOf(
|
||||||
buttonTransition.start()
|
surfaceTransition,
|
||||||
textTransition.start()
|
surfaceContainerTransition,
|
||||||
backTransition.start()
|
buttonTransition,
|
||||||
|
backTransition,
|
||||||
|
textTransition,
|
||||||
|
primaryTransition,
|
||||||
|
tertiaryTransition
|
||||||
|
).forEach { it.start() }
|
||||||
}
|
}
|
||||||
|
|
||||||
surfaceFinalColor = colorSurface
|
surfaceFinalColor = colorSurface
|
||||||
secondaryFinalColor = colorSecondary
|
secondaryFinalColor = colorSecondary
|
||||||
onSurfaceFinalColor = colorOnSurface
|
onSurfaceFinalColor = colorOnSurface
|
||||||
|
surfaceContainerFinalColor = colorSurfaceContainer
|
||||||
(binding.llCover.background as? GradientDrawable)?.colors =
|
primaryFinalColor = colorPrimary
|
||||||
intArrayOf(Color.TRANSPARENT, colorSurface)
|
tertiaryFinalColor = colorTertiary
|
||||||
|
secondaryContainerFinalColor = colorSecondaryContainer
|
||||||
binding.collTopBar.setContentScrimColor(colorSurfaceContainer)
|
|
||||||
binding.lbKind.applyColorScheme(colorSurfaceContainer, colorOnSurface)
|
|
||||||
binding.tvChapter.setTextColor(colorPrimary)
|
|
||||||
binding.div.setTextColor(colorSecondary)
|
|
||||||
binding.tvChapterIndex.setTextColor(colorSecondary)
|
|
||||||
binding.btnRead.setBackgroundColor(colorTertiary)
|
|
||||||
binding.tvToc.setTextColor(colorOnSurface)
|
|
||||||
binding.tvLasted.setTextColor(colorOnSurface)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun upLoading(isLoading: Boolean, chapterList: List<BookChapter>? = null) {
|
private fun upLoading(isLoading: Boolean, chapterList: List<BookChapter>? = null) {
|
||||||
|
|||||||
@@ -38,7 +38,7 @@ class LabelsBar @JvmOverloads constructor(
|
|||||||
chipEndPadding = 8f
|
chipEndPadding = 8f
|
||||||
chipStrokeWidth = 0f
|
chipStrokeWidth = 0f
|
||||||
chipBackgroundColor = ColorStateList.valueOf(
|
chipBackgroundColor = ColorStateList.valueOf(
|
||||||
context.themeColor(com.google.android.material.R.attr.colorPrimaryContainer)
|
context.themeColor(com.google.android.material.R.attr.colorSurfaceContainerHighest)
|
||||||
)
|
)
|
||||||
usedChips.add(this)
|
usedChips.add(this)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -50,23 +50,21 @@
|
|||||||
<androidx.swiperefreshlayout.widget.SwipeRefreshLayout
|
<androidx.swiperefreshlayout.widget.SwipeRefreshLayout
|
||||||
android:id="@+id/refresh_layout"
|
android:id="@+id/refresh_layout"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="wrap_content"
|
||||||
app:layout_behavior="@string/appbar_scrolling_view_behavior">
|
app:layout_behavior="@string/appbar_scrolling_view_behavior">
|
||||||
|
|
||||||
<androidx.core.widget.NestedScrollView
|
<androidx.core.widget.NestedScrollView
|
||||||
android:id="@+id/scroll_view"
|
android:id="@+id/scroll_view"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="wrap_content"
|
||||||
android:fillViewport="true"
|
android:fillViewport="true"
|
||||||
android:fitsSystemWindows="false"
|
android:fitsSystemWindows="false"
|
||||||
android:focusable="true"
|
android:focusable="true"
|
||||||
android:padding="0dp"
|
|
||||||
android:scrollbarStyle="outsideOverlay"
|
|
||||||
android:scrollbars="vertical">
|
android:scrollbars="vertical">
|
||||||
|
|
||||||
<androidx.constraintlayout.widget.ConstraintLayout
|
<LinearLayout
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="match_parent"
|
||||||
android:orientation="vertical">
|
android:orientation="vertical">
|
||||||
|
|
||||||
<androidx.constraintlayout.widget.ConstraintLayout
|
<androidx.constraintlayout.widget.ConstraintLayout
|
||||||
@@ -74,8 +72,8 @@
|
|||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:background="@drawable/bg_gradient_mask"
|
android:background="@drawable/bg_gradient_mask"
|
||||||
android:paddingHorizontal="16dp"
|
android:paddingTop="8dp"
|
||||||
android:paddingVertical="8dp"
|
android:paddingBottom="4dp"
|
||||||
app:layout_constraintTop_toTopOf="parent">
|
app:layout_constraintTop_toTopOf="parent">
|
||||||
|
|
||||||
<com.google.android.material.card.MaterialCardView
|
<com.google.android.material.card.MaterialCardView
|
||||||
@@ -83,11 +81,11 @@
|
|||||||
android:layout_width="0dp"
|
android:layout_width="0dp"
|
||||||
android:layout_height="0dp"
|
android:layout_height="0dp"
|
||||||
app:cardCornerRadius="8dp"
|
app:cardCornerRadius="8dp"
|
||||||
app:layout_constraintBottom_toBottomOf="parent"
|
android:layout_marginStart="16dp"
|
||||||
app:layout_constraintDimensionRatio="5:7"
|
app:layout_constraintDimensionRatio="5:7"
|
||||||
app:layout_constraintStart_toStartOf="parent"
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
app:layout_constraintTop_toTopOf="parent"
|
app:layout_constraintTop_toTopOf="parent"
|
||||||
app:layout_constraintWidth_percent="0.32"
|
app:layout_constraintWidth_percent="0.3"
|
||||||
app:strokeWidth="0dp">
|
app:strokeWidth="0dp">
|
||||||
|
|
||||||
<io.legato.kazusa.ui.widget.image.CoverImageView
|
<io.legato.kazusa.ui.widget.image.CoverImageView
|
||||||
@@ -105,6 +103,7 @@
|
|||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_gravity="center"
|
android:layout_gravity="center"
|
||||||
android:orientation="vertical"
|
android:orientation="vertical"
|
||||||
|
android:layout_marginEnd="16dp"
|
||||||
android:padding="12dp"
|
android:padding="12dp"
|
||||||
app:layout_constraintBottom_toBottomOf="@id/cd_cov"
|
app:layout_constraintBottom_toBottomOf="@id/cd_cov"
|
||||||
app:layout_constraintEnd_toEndOf="parent"
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
@@ -182,24 +181,15 @@
|
|||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
|
||||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
|
||||||
|
|
||||||
<androidx.constraintlayout.widget.ConstraintLayout
|
|
||||||
android:id="@+id/ll_info"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="0dp"
|
|
||||||
android:background="?attr/colorSurface"
|
|
||||||
android:orientation="vertical"
|
|
||||||
app:layout_constraintBottom_toBottomOf="parent"
|
|
||||||
app:layout_constraintTop_toBottomOf="@id/ll_cover">
|
|
||||||
|
|
||||||
<HorizontalScrollView
|
<HorizontalScrollView
|
||||||
android:id="@+id/scroll_labels"
|
android:id="@+id/scroll_labels"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:paddingStart="16dp"
|
android:layout_marginStart="16dp"
|
||||||
|
android:layout_marginTop="8dp"
|
||||||
android:scrollbars="none"
|
android:scrollbars="none"
|
||||||
app:layout_constraintTop_toTopOf="parent">
|
app:layout_constraintBottom_toBottomOf="parent"
|
||||||
|
app:layout_constraintTop_toBottomOf="@id/cd_cov">
|
||||||
|
|
||||||
<io.legato.kazusa.ui.widget.LabelsBar
|
<io.legato.kazusa.ui.widget.LabelsBar
|
||||||
android:id="@+id/lb_kind"
|
android:id="@+id/lb_kind"
|
||||||
@@ -209,6 +199,17 @@
|
|||||||
|
|
||||||
</HorizontalScrollView>
|
</HorizontalScrollView>
|
||||||
|
|
||||||
|
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||||
|
|
||||||
|
<androidx.constraintlayout.widget.ConstraintLayout
|
||||||
|
android:id="@+id/ll_info"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="0dp"
|
||||||
|
android:layout_weight="1"
|
||||||
|
android:background="?attr/colorSurface"
|
||||||
|
android:orientation="vertical"
|
||||||
|
app:layout_constraintTop_toBottomOf="@id/ll_cover">
|
||||||
|
|
||||||
<LinearLayout
|
<LinearLayout
|
||||||
android:id="@+id/cl_buttons"
|
android:id="@+id/cl_buttons"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
@@ -217,7 +218,7 @@
|
|||||||
android:gravity="center_vertical"
|
android:gravity="center_vertical"
|
||||||
android:orientation="horizontal"
|
android:orientation="horizontal"
|
||||||
android:weightSum="4"
|
android:weightSum="4"
|
||||||
app:layout_constraintTop_toBottomOf="@id/scroll_labels">
|
app:layout_constraintTop_toTopOf="parent">
|
||||||
|
|
||||||
<com.google.android.material.button.MaterialButton
|
<com.google.android.material.button.MaterialButton
|
||||||
android:id="@+id/btn_shelf"
|
android:id="@+id/btn_shelf"
|
||||||
@@ -287,8 +288,8 @@
|
|||||||
android:layout_width="0dp"
|
android:layout_width="0dp"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginHorizontal="16dp"
|
android:layout_marginHorizontal="16dp"
|
||||||
android:layout_marginTop="8dp"
|
android:layout_marginTop="4dp"
|
||||||
android:textSize="16sp"
|
android:textSize="17sp"
|
||||||
android:textStyle="bold"
|
android:textStyle="bold"
|
||||||
app:layout_constraintEnd_toEndOf="parent"
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
app:layout_constraintStart_toStartOf="parent"
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
@@ -300,7 +301,7 @@
|
|||||||
android:layout_width="0dp"
|
android:layout_width="0dp"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginHorizontal="16dp"
|
android:layout_marginHorizontal="16dp"
|
||||||
android:layout_marginTop="8dp"
|
android:layout_marginTop="4dp"
|
||||||
android:singleLine="true"
|
android:singleLine="true"
|
||||||
android:textSize="14sp"
|
android:textSize="14sp"
|
||||||
app:layout_constraintEnd_toEndOf="parent"
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
@@ -314,7 +315,7 @@
|
|||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginStart="16dp"
|
android:layout_marginStart="16dp"
|
||||||
android:layout_marginTop="8dp"
|
android:layout_marginTop="4dp"
|
||||||
android:singleLine="true"
|
android:singleLine="true"
|
||||||
android:textColor="?attr/colorPrimary"
|
android:textColor="?attr/colorPrimary"
|
||||||
android:textSize="14sp"
|
android:textSize="14sp"
|
||||||
@@ -350,50 +351,41 @@
|
|||||||
<TextView
|
<TextView
|
||||||
android:id="@+id/tv_detail"
|
android:id="@+id/tv_detail"
|
||||||
android:layout_width="0dp"
|
android:layout_width="0dp"
|
||||||
android:layout_height="0dp"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginHorizontal="16dp"
|
android:layout_marginHorizontal="16dp"
|
||||||
android:layout_marginTop="8dp"
|
android:layout_marginTop="16dp"
|
||||||
|
android:paddingBottom="120dp"
|
||||||
android:clickable="true"
|
android:clickable="true"
|
||||||
android:focusable="true"
|
android:focusable="true"
|
||||||
android:lineSpacingExtra="4dp"
|
android:lineSpacingExtra="4dp"
|
||||||
android:minHeight="48dp"
|
|
||||||
android:paddingBottom="120dp"
|
|
||||||
android:text="@string/book_intro"
|
android:text="@string/book_intro"
|
||||||
android:textIsSelectable="true"
|
android:textIsSelectable="true"
|
||||||
android:textSize="14sp"
|
android:textSize="14sp"
|
||||||
android:visibility="visible"
|
android:visibility="visible"
|
||||||
app:layout_constraintBottom_toBottomOf="parent"
|
|
||||||
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/tv_chapter"
|
app:layout_constraintTop_toBottomOf="@id/tv_chapter"
|
||||||
tools:text="@string/book_intro" />
|
tools:text="@string/book_intro" />
|
||||||
|
|
||||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
</LinearLayout>
|
||||||
</androidx.core.widget.NestedScrollView>
|
</androidx.core.widget.NestedScrollView>
|
||||||
</androidx.swiperefreshlayout.widget.SwipeRefreshLayout>
|
</androidx.swiperefreshlayout.widget.SwipeRefreshLayout>
|
||||||
|
|
||||||
<LinearLayout
|
<com.google.android.material.floatingactionbutton.ExtendedFloatingActionButton
|
||||||
android:id="@+id/ll_read"
|
android:id="@+id/btn_read"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_gravity="bottom"
|
android:layout_margin="16dp"
|
||||||
android:gravity="end"
|
android:contentDescription="@string/reading"
|
||||||
android:orientation="horizontal">
|
android:minWidth="56dp"
|
||||||
|
android:text="@string/reading"
|
||||||
<com.google.android.material.floatingactionbutton.ExtendedFloatingActionButton
|
android:textColor="?attr/colorOnPrimary"
|
||||||
android:id="@+id/btn_read"
|
app:backgroundTint="?attr/colorTertiary"
|
||||||
android:layout_width="wrap_content"
|
app:icon="@drawable/ic_bottom_books"
|
||||||
android:layout_height="wrap_content"
|
app:iconTint="?attr/colorOnPrimary"
|
||||||
android:layout_margin="16dp"
|
app:layout_anchor="@id/refresh_layout"
|
||||||
android:contentDescription="@string/reading"
|
app:layout_anchorGravity="bottom|end" />
|
||||||
android:minWidth="56dp"
|
|
||||||
android:text="@string/reading"
|
|
||||||
android:textColor="?attr/colorOnPrimary"
|
|
||||||
app:backgroundTint="?attr/colorTertiary"
|
|
||||||
app:icon="@drawable/ic_bottom_books"
|
|
||||||
app:iconTint="?attr/colorOnPrimary" />
|
|
||||||
</LinearLayout>
|
|
||||||
|
|
||||||
|
|
||||||
</androidx.coordinatorlayout.widget.CoordinatorLayout>
|
</androidx.coordinatorlayout.widget.CoordinatorLayout>
|
||||||
Reference in new issue
Block a user