From 7991a1bec9b33a04fc2692973fdfd46dbf72ec93 Mon Sep 17 00:00:00 2001 From: HuanChengFly <609486518@qq.com> Date: Thu, 17 Jun 2021 17:10:57 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=E5=8E=86=E5=8F=B2?= =?UTF-8?q?=E8=AE=B0=E5=BD=95=20Header=20=E8=83=8C=E6=99=AF=E9=80=8F?= =?UTF-8?q?=E6=98=8E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../post/activities/NewSearchActivity.kt | 8 ++-- .../post/adapters/HeaderDelegateAdapter.kt | 39 ++++++++++++++++--- .../tieba/post/fragments/HistoryFragment.kt | 10 +++-- .../post/fragments/MainForumListFragment.kt | 8 ++-- .../post/fragments/SearchForumFragment.kt | 4 +- .../post/fragments/SearchThreadFragment.kt | 4 +- .../post/fragments/SearchUserFragment.kt | 4 +- 7 files changed, 53 insertions(+), 24 deletions(-) diff --git a/app/src/main/java/com/huanchengfly/tieba/post/activities/NewSearchActivity.kt b/app/src/main/java/com/huanchengfly/tieba/post/activities/NewSearchActivity.kt index 5c4214a7..ab734993 100644 --- a/app/src/main/java/com/huanchengfly/tieba/post/activities/NewSearchActivity.kt +++ b/app/src/main/java/com/huanchengfly/tieba/post/activities/NewSearchActivity.kt @@ -158,8 +158,8 @@ class NewSearchActivity : BaseActivity(), TabLayout.OnTabSelectedListener { R.drawable.ic_round_keyboard, if (histories.size > 0) R.drawable.ic_round_delete else NO_ICON ).apply { - setBackgroundResource(R.drawable.bg_top_radius_8dp) - backgroundTintList = R.color.default_color_card + setHeaderBackgroundResource(R.drawable.bg_top_radius_8dp) + headerBackgroundTintList = R.color.default_color_card iconTintList = R.color.default_color_primary titleTextColor = R.color.default_color_primary topMargin = resources.getDimensionPixelSize(R.dimen.card_margin) @@ -207,8 +207,8 @@ class NewSearchActivity : BaseActivity(), TabLayout.OnTabSelectedListener { R.drawable.ic_round_polymer, R.drawable.ic_round_chevron_right ).apply { - setBackgroundResource(R.drawable.bg_top_radius_8dp) - backgroundTintList = R.color.default_color_card + setHeaderBackgroundResource(R.drawable.bg_top_radius_8dp) + headerBackgroundTintList = R.color.default_color_card iconTintList = R.color.default_color_primary titleTextColor = R.color.default_color_primary topMargin = resources.getDimensionPixelSize(R.dimen.card_margin) diff --git a/app/src/main/java/com/huanchengfly/tieba/post/adapters/HeaderDelegateAdapter.kt b/app/src/main/java/com/huanchengfly/tieba/post/adapters/HeaderDelegateAdapter.kt index d6e78a86..670ab6b5 100644 --- a/app/src/main/java/com/huanchengfly/tieba/post/adapters/HeaderDelegateAdapter.kt +++ b/app/src/main/java/com/huanchengfly/tieba/post/adapters/HeaderDelegateAdapter.kt @@ -1,11 +1,15 @@ package com.huanchengfly.tieba.post.adapters import android.content.Context +import android.graphics.Color +import android.graphics.drawable.ColorDrawable import android.graphics.drawable.Drawable import android.view.View import android.view.ViewGroup import android.widget.FrameLayout import android.widget.RelativeLayout +import androidx.annotation.ColorInt +import androidx.annotation.ColorRes import androidx.annotation.DrawableRes import androidx.core.content.ContextCompat import com.alibaba.android.vlayout.DelegateAdapter @@ -68,12 +72,23 @@ class HeaderDelegateAdapter @JvmOverloads constructor( notifyDataSetChanged() } - var background: Drawable? = null + var viewBackground: Drawable? = null set(value) { field = value notifyDataSetChanged() } - var backgroundTintList: Int = R.color.default_color_card + var viewBackgroundTintList: Int = 0 + set(value) { + field = value + notifyDataSetChanged() + } + + var headerBackground: Drawable? = null + set(value) { + field = value + notifyDataSetChanged() + } + var headerBackgroundTintList: Int = R.color.default_color_card set(value) { field = value notifyDataSetChanged() @@ -150,8 +165,18 @@ class HeaderDelegateAdapter @JvmOverloads constructor( }) } - fun setBackgroundResource(@DrawableRes resId: Int) { - background = ContextCompat.getDrawable(context, resId) + fun setHeaderBackgroundResource(@DrawableRes resId: Int) { + headerBackground = ContextCompat.getDrawable(context, resId) + } + + fun setViewBackgroundColor(@ColorInt color: Int) { + viewBackground = ColorDrawable(color) + viewBackgroundTintList = 0 + } + + fun setViewBackgroundColorResource(@ColorRes resId: Int) { + viewBackground = ColorDrawable(Color.WHITE) + viewBackgroundTintList = resId } constructor( @@ -188,8 +213,10 @@ class HeaderDelegateAdapter @JvmOverloads constructor( this.marginEnd = this@HeaderDelegateAdapter.endMargin this.bottomMargin = this@HeaderDelegateAdapter.bottomMargin } - rootView.background = background - rootView.backgroundTintList = ColorStateListUtils.createColorStateList(context, backgroundTintList) + rootView.background = headerBackground + rootView.backgroundTintList = if (headerBackgroundTintList == 0) null else ColorStateListUtils.createColorStateList(context, headerBackgroundTintList) + holder.itemView.background = viewBackground + holder.itemView.backgroundTintList = if (viewBackgroundTintList == 0) null else ColorStateListUtils.createColorStateList(context, viewBackgroundTintList) holder.getView(R.id.icon).setTintListResId(iconTintList) holder.getView(R.id.end_icon).setTintListResId(iconTintList) holder.getView(R.id.title).tintResId = titleTextColor diff --git a/app/src/main/java/com/huanchengfly/tieba/post/fragments/HistoryFragment.kt b/app/src/main/java/com/huanchengfly/tieba/post/fragments/HistoryFragment.kt index b96f2e5b..399cb05d 100644 --- a/app/src/main/java/com/huanchengfly/tieba/post/fragments/HistoryFragment.kt +++ b/app/src/main/java/com/huanchengfly/tieba/post/fragments/HistoryFragment.kt @@ -80,10 +80,11 @@ class HistoryFragment : BaseFragment(), OnItemClickListener, Refreshabl startIconResId = R.drawable.ic_date_range, sticky = HeaderDelegateAdapter.STICKY_START ).apply { - setBackgroundResource(R.drawable.bg_top_radius_8dp) + setHeaderBackgroundResource(R.drawable.bg_top_radius_8dp) iconTintList = R.color.default_color_primary titleTextColor = R.color.default_color_primary - backgroundTintList = R.color.default_color_card + headerBackgroundTintList = R.color.default_color_card + setViewBackgroundColorResource(R.color.default_color_window_background) topMargin = attachContext.resources.getDimensionPixelSize(R.dimen.card_margin) startPadding = 12.dpToPx() endPadding = 12.dpToPx() @@ -97,10 +98,11 @@ class HistoryFragment : BaseFragment(), OnItemClickListener, Refreshabl startIconResId = R.drawable.ic_date_range, sticky = HeaderDelegateAdapter.STICKY_START ).apply { - setBackgroundResource(R.drawable.bg_top_radius_8dp) + setHeaderBackgroundResource(R.drawable.bg_top_radius_8dp) iconTintList = R.color.default_color_primary titleTextColor = R.color.default_color_primary - backgroundTintList = R.color.default_color_card + headerBackgroundTintList = R.color.default_color_card + setViewBackgroundColorResource(R.color.default_color_window_background) topMargin = attachContext.resources.getDimensionPixelSize(R.dimen.card_margin) startPadding = 12.dpToPx() endPadding = 12.dpToPx() diff --git a/app/src/main/java/com/huanchengfly/tieba/post/fragments/MainForumListFragment.kt b/app/src/main/java/com/huanchengfly/tieba/post/fragments/MainForumListFragment.kt index d749377b..8d5c550e 100644 --- a/app/src/main/java/com/huanchengfly/tieba/post/fragments/MainForumListFragment.kt +++ b/app/src/main/java/com/huanchengfly/tieba/post/fragments/MainForumListFragment.kt @@ -220,8 +220,8 @@ class MainForumListFragment : BaseFragment(), Refreshable, Toolbar.OnMenuItemCli R.string.title_top_forum, R.drawable.ic_round_graphic_eq ).apply { - setBackgroundResource(R.drawable.bg_top_radius_8dp) - backgroundTintList = R.color.default_color_card + setHeaderBackgroundResource(R.drawable.bg_top_radius_8dp) + headerBackgroundTintList = R.color.default_color_card iconTintList = R.color.default_color_primary titleTextColor = R.color.default_color_primary topMargin = attachContext.resources.getDimensionPixelSize(R.dimen.card_margin) @@ -236,8 +236,8 @@ class MainForumListFragment : BaseFragment(), Refreshable, Toolbar.OnMenuItemCli R.string.forum_list_title, R.drawable.ic_infinite ).apply { - setBackgroundResource(R.drawable.bg_top_radius_8dp) - backgroundTintList = R.color.default_color_card + setHeaderBackgroundResource(R.drawable.bg_top_radius_8dp) + headerBackgroundTintList = R.color.default_color_card iconTintList = R.color.default_color_primary titleTextColor = R.color.default_color_primary topMargin = attachContext.resources.getDimensionPixelSize(R.dimen.card_margin) diff --git a/app/src/main/java/com/huanchengfly/tieba/post/fragments/SearchForumFragment.kt b/app/src/main/java/com/huanchengfly/tieba/post/fragments/SearchForumFragment.kt index 19a95364..734a5edc 100644 --- a/app/src/main/java/com/huanchengfly/tieba/post/fragments/SearchForumFragment.kt +++ b/app/src/main/java/com/huanchengfly/tieba/post/fragments/SearchForumFragment.kt @@ -112,7 +112,7 @@ class SearchForumFragment : BaseFragment(), ISearchFragment, OnItemClickListener R.string.title_exact_match, R.drawable.ic_round_graphic_eq ).apply { - setBackgroundResource(R.drawable.bg_top_radius_8dp) + setHeaderBackgroundResource(R.drawable.bg_top_radius_8dp) topMargin = attachContext.resources.getDimensionPixelSize(R.dimen.card_margin) startPadding = 16.dpToPx() endPadding = 16.dpToPx() @@ -126,7 +126,7 @@ class SearchForumFragment : BaseFragment(), ISearchFragment, OnItemClickListener R.string.title_fuzzy_match, R.drawable.ic_infinite ).apply { - setBackgroundResource(R.drawable.bg_top_radius_8dp) + setHeaderBackgroundResource(R.drawable.bg_top_radius_8dp) topMargin = attachContext.resources.getDimensionPixelSize(R.dimen.card_margin) startPadding = 16.dpToPx() endPadding = 16.dpToPx() diff --git a/app/src/main/java/com/huanchengfly/tieba/post/fragments/SearchThreadFragment.kt b/app/src/main/java/com/huanchengfly/tieba/post/fragments/SearchThreadFragment.kt index 9d92a3e1..b6fca0d6 100644 --- a/app/src/main/java/com/huanchengfly/tieba/post/fragments/SearchThreadFragment.kt +++ b/app/src/main/java/com/huanchengfly/tieba/post/fragments/SearchThreadFragment.kt @@ -110,8 +110,8 @@ class SearchThreadFragment : BaseFragment(), ISearchFragment, NewSearchActivity. attachContext, titleResId = getSearchFilterTitleResId(filter) ).apply { - setBackgroundResource(R.drawable.bg_top_radius_8dp) - backgroundTintList = R.color.default_color_card + setHeaderBackgroundResource(R.drawable.bg_top_radius_8dp) + headerBackgroundTintList = R.color.default_color_card topMargin = attachContext.resources.getDimensionPixelSize(R.dimen.card_margin) }) delegateAdapter.addAdapter(searchThreadAdapter!!.apply { diff --git a/app/src/main/java/com/huanchengfly/tieba/post/fragments/SearchUserFragment.kt b/app/src/main/java/com/huanchengfly/tieba/post/fragments/SearchUserFragment.kt index 7f98fea0..4339ef92 100644 --- a/app/src/main/java/com/huanchengfly/tieba/post/fragments/SearchUserFragment.kt +++ b/app/src/main/java/com/huanchengfly/tieba/post/fragments/SearchUserFragment.kt @@ -99,7 +99,7 @@ class SearchUserFragment : BaseFragment(), ISearchFragment, OnItemClickListener< R.string.title_exact_match, R.drawable.ic_round_graphic_eq ).apply { - setBackgroundResource(R.drawable.bg_top_radius_8dp) + setHeaderBackgroundResource(R.drawable.bg_top_radius_8dp) topMargin = attachContext.resources.getDimensionPixelSize(R.dimen.card_margin) startPadding = 16.dpToPx() endPadding = 16.dpToPx() @@ -113,7 +113,7 @@ class SearchUserFragment : BaseFragment(), ISearchFragment, OnItemClickListener< R.string.title_fuzzy_match, R.drawable.ic_infinite ).apply { - setBackgroundResource(R.drawable.bg_top_radius_8dp) + setHeaderBackgroundResource(R.drawable.bg_top_radius_8dp) topMargin = attachContext.resources.getDimensionPixelSize(R.dimen.card_margin) startPadding = 16.dpToPx() endPadding = 16.dpToPx()