From 1481ce288dadcd7d19a7a3dd8dad8cb8bafb5f6e Mon Sep 17 00:00:00 2001 From: kunfei Date: Sun, 23 Feb 2020 21:33:36 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E4=BC=98=E5=8C=96=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../io/legado/app/ui/book/read/TextActionMenu.kt | 2 -- .../app/ui/widget/recycler/DividerNoLast.kt | 16 +++++++++++++--- 2 files changed, 13 insertions(+), 5 deletions(-) diff --git a/app/src/main/java/io/legado/app/ui/book/read/TextActionMenu.kt b/app/src/main/java/io/legado/app/ui/book/read/TextActionMenu.kt index acc4e4f1d..fe56a18be 100644 --- a/app/src/main/java/io/legado/app/ui/book/read/TextActionMenu.kt +++ b/app/src/main/java/io/legado/app/ui/book/read/TextActionMenu.kt @@ -20,7 +20,6 @@ import androidx.recyclerview.widget.RecyclerView import io.legado.app.R import io.legado.app.base.adapter.ItemViewHolder import io.legado.app.base.adapter.SimpleRecyclerAdapter -import io.legado.app.ui.widget.recycler.DividerNoLast import io.legado.app.utils.isAbsUrl import io.legado.app.utils.sendToClip import kotlinx.android.synthetic.main.item_fillet_text.view.* @@ -46,7 +45,6 @@ class TextActionMenu(private val context: Context, private val callBack: CallBac private fun initRecyclerView() = with(contentView) { val adapter = Adapter(context) recycler_view.layoutManager = LinearLayoutManager(context, RecyclerView.HORIZONTAL, false) - recycler_view.addItemDecoration(DividerNoLast(context, DividerNoLast.HORIZONTAL)) recycler_view.adapter = adapter val menu = MenuBuilder(context) SupportMenuInflater(context).inflate(R.menu.content_select_action, menu) diff --git a/app/src/main/java/io/legado/app/ui/widget/recycler/DividerNoLast.kt b/app/src/main/java/io/legado/app/ui/widget/recycler/DividerNoLast.kt index 3a005960d..5c9e38e4d 100644 --- a/app/src/main/java/io/legado/app/ui/widget/recycler/DividerNoLast.kt +++ b/app/src/main/java/io/legado/app/ui/widget/recycler/DividerNoLast.kt @@ -8,6 +8,8 @@ import android.util.Log import android.view.View import android.widget.LinearLayout import androidx.recyclerview.widget.RecyclerView +import kotlin.math.roundToInt + /** * 不画最后一条分隔线 @@ -106,7 +108,7 @@ class DividerNoLast(context: Context, orientation: Int) : for (i in 0 until childCount - 1) { val child = parent.getChildAt(i) parent.getDecoratedBoundsWithMargins(child, mBounds) - val bottom = mBounds.bottom + Math.round(child.translationY) + val bottom = mBounds.bottom + child.translationY.roundToInt() val top = bottom - mDivider!!.intrinsicHeight mDivider!!.setBounds(left, top, right, bottom) mDivider!!.draw(canvas) @@ -133,7 +135,7 @@ class DividerNoLast(context: Context, orientation: Int) : for (i in 0 until childCount - 1) { val child = parent.getChildAt(i) parent.layoutManager!!.getDecoratedBoundsWithMargins(child, mBounds) - val right = mBounds.right + Math.round(child.translationX) + val right = mBounds.right + child.translationX.roundToInt() val left = right - mDivider!!.intrinsicWidth mDivider!!.setBounds(left, top, right, bottom) mDivider!!.draw(canvas) @@ -149,10 +151,18 @@ class DividerNoLast(context: Context, orientation: Int) : outRect[0, 0, 0] = 0 return } + if (mOrientation == VERTICAL) { outRect[0, 0, 0] = mDivider!!.intrinsicHeight } else { - outRect[0, 0, mDivider!!.intrinsicWidth] = 0 + val childAdapterPosition = parent.getChildAdapterPosition(view) + val lastCount = parent.adapter!!.itemCount - 1 + //如果不是最后一条 正常赋值 如果是最后一条 赋值为0 + if (childAdapterPosition != lastCount) { + outRect[0, 0, mDivider!!.intrinsicWidth] = 0 + } else { + outRect[0, 0, 0] = 0 + } } }