From 2b792be289ac0b6b4f98bf8051ea02f1ebdddb92 Mon Sep 17 00:00:00 2001 From: wangyu Date: Thu, 15 Jan 2026 18:07:36 +0800 Subject: [PATCH] =?UTF-8?q?bug=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/cheng/blzb/bean/ConfigEntity.kt | 3 + .../java/com/cheng/blzb/bean/UserEntity.kt | 3 +- .../cheng/blzb/manager/UserConfigManager.kt | 16 + .../java/com/cheng/blzb/net/ApiService.kt | 4 +- .../fragment/bid/detail/BidDetailFragment.kt | 3 +- .../fragment/bid/publish/bid/MyBidAdapter.kt | 4 +- .../publish/bid/PublishBidMessageFragment.kt | 13 +- .../bid/publish/goods/MyGoodsAdapter.kt | 4 +- .../goods/PublishGoodsMessageFragment.kt | 13 +- .../blzb/ui/fragment/home/HomeFragment.kt | 2 +- .../ui/fragment/home/zzdb/ZZDBFragment.kt | 2 + .../ui/fragment/merchant/MerchantFragment.kt | 11 +- .../detail/MerchantGoodsDetailFragment.kt | 2 +- .../list/MerchantGoodsListViewModel.kt | 2 +- .../blzb/ui/fragment/mine/MineFragment.kt | 24 +- .../fragment/mine/auth/CompanyAuthFragment.kt | 18 +- .../blzb/ui/fragment/mine/vip/VipFragment.kt | 40 +- .../search/list/SearchListFragment.kt | 1 + .../layout/fragment_merchant_goods_detail.xml | 494 +++++++++--------- app/src/main/res/layout/fragment_mine.xml | 11 +- app/src/main/res/values/colors.xml | 1 + 21 files changed, 377 insertions(+), 294 deletions(-) diff --git a/app/src/main/java/com/cheng/blzb/bean/ConfigEntity.kt b/app/src/main/java/com/cheng/blzb/bean/ConfigEntity.kt index 9be7259..ed08c91 100644 --- a/app/src/main/java/com/cheng/blzb/bean/ConfigEntity.kt +++ b/app/src/main/java/com/cheng/blzb/bean/ConfigEntity.kt @@ -33,4 +33,7 @@ class ConfigEntity { @SerializedName("client.service.phone") //客服电话 var servicePhoneList: List = emptyList() + + @SerializedName("client.pay.type") //全局支付方式 + var payType: List = emptyList() } \ No newline at end of file diff --git a/app/src/main/java/com/cheng/blzb/bean/UserEntity.kt b/app/src/main/java/com/cheng/blzb/bean/UserEntity.kt index 6b21b25..0adb597 100644 --- a/app/src/main/java/com/cheng/blzb/bean/UserEntity.kt +++ b/app/src/main/java/com/cheng/blzb/bean/UserEntity.kt @@ -30,5 +30,6 @@ data class UserEntity( val vip_expire_time: String, val vip_name: String, val weixinAppOpenId: String, - val ip_area: String + val ip_area: String, + val is_show_crop_add: Boolean ) : Serializable \ No newline at end of file diff --git a/app/src/main/java/com/cheng/blzb/manager/UserConfigManager.kt b/app/src/main/java/com/cheng/blzb/manager/UserConfigManager.kt index 27a2aac..8c6abc9 100644 --- a/app/src/main/java/com/cheng/blzb/manager/UserConfigManager.kt +++ b/app/src/main/java/com/cheng/blzb/manager/UserConfigManager.kt @@ -84,6 +84,7 @@ object UserConfigManager { saveShareEntity(data.config!!.wxShareEntity) saveAdSwitch(data.config!!.adSwitch) saveServicePhoneList(data.config!!.servicePhoneList) + savePayType(data.config!!.payType) } } catch (e : Exception) { e.printStackTrace() @@ -213,6 +214,21 @@ object UserConfigManager { return emptyList() } + /** + * 全局支付方式 + */ + private fun savePayType(list: List) { + MMKVUtils.put("pay_type", Gson().toJson(list)) + } + + fun getPayType(): List { + val str = MMKVUtils.getString("pay_type") + if (!TextUtils.isEmpty(str)) { + return Gson().fromJson(str, object : TypeToken>() {}.type) + } + return emptyList() + } + /** * 搜索排序 */ diff --git a/app/src/main/java/com/cheng/blzb/net/ApiService.kt b/app/src/main/java/com/cheng/blzb/net/ApiService.kt index cf23fdd..3c62576 100644 --- a/app/src/main/java/com/cheng/blzb/net/ApiService.kt +++ b/app/src/main/java/com/cheng/blzb/net/ApiService.kt @@ -340,8 +340,8 @@ interface ApiService { /** * 供应商搜索 */ - @GET("/api/user/goods/search") - suspend fun searchSupplier(@QueryMap map: Map): HttpBaseResult> + @GET("/api/user/goods/searchks") + suspend fun searchGoods(@QueryMap map: Map): HttpBaseResult> /** * 浏览历史 diff --git a/app/src/main/java/com/cheng/blzb/ui/fragment/bid/detail/BidDetailFragment.kt b/app/src/main/java/com/cheng/blzb/ui/fragment/bid/detail/BidDetailFragment.kt index e88160a..120bfc1 100644 --- a/app/src/main/java/com/cheng/blzb/ui/fragment/bid/detail/BidDetailFragment.kt +++ b/app/src/main/java/com/cheng/blzb/ui/fragment/bid/detail/BidDetailFragment.kt @@ -28,6 +28,7 @@ import com.example.base.extensions.onClick import com.example.base.extensions.toast import com.example.base.extensions.visible import com.example.base.ui.BaseFragment +import com.example.base.utils.AppUtils import com.example.base.utils.ClipboardUtils import com.google.gson.Gson import com.google.gson.reflect.TypeToken @@ -88,7 +89,7 @@ class BidDetailFragment: BaseFragment(R.layout.listitem_my_bid) "2" -> { holder.setText(R.id.tv_status, "已发布") - holder.setTextColor(R.id.tv_status, getColor(R.color.color_e3fae7)) + holder.setTextColor(R.id.tv_status, getColor(R.color.color_3bbf0f)) holder.setBackgroundResource(R.id.tv_status, R.drawable.shape_publish_status_bg2) holder.getView(R.id.tv_status).setCompoundDrawablesWithIntrinsicBounds(R.mipmap.ic_publish_status2, 0, 0, 0) } "3" -> { holder.setText(R.id.tv_status, "已驳回") - holder.setTextColor(R.id.tv_status, getColor(R.color.color_ffede7)) + holder.setTextColor(R.id.tv_status, getColor(R.color.color_ff592b)) holder.setBackgroundResource(R.id.tv_status, R.drawable.shape_publish_status_bg3) holder.getView(R.id.tv_status).setCompoundDrawablesWithIntrinsicBounds(R.mipmap.ic_publish_status3, 0, 0, 0) diff --git a/app/src/main/java/com/cheng/blzb/ui/fragment/bid/publish/bid/PublishBidMessageFragment.kt b/app/src/main/java/com/cheng/blzb/ui/fragment/bid/publish/bid/PublishBidMessageFragment.kt index 9d918f6..a7ea57d 100644 --- a/app/src/main/java/com/cheng/blzb/ui/fragment/bid/publish/bid/PublishBidMessageFragment.kt +++ b/app/src/main/java/com/cheng/blzb/ui/fragment/bid/publish/bid/PublishBidMessageFragment.kt @@ -45,6 +45,7 @@ import com.huantansheng.easyphotos.EasyPhotos import com.huantansheng.easyphotos.callback.SelectCallback import com.huantansheng.easyphotos.models.album.entity.Photo import okhttp3.RequestBody.Companion.toRequestBody +import org.jetbrains.anko.sdk27.listeners.onTouch import java.io.File class PublishBidMessageFragment : BaseFragment() { @@ -148,13 +149,19 @@ class PublishBidMessageFragment : BaseFragment + binding.ivAddContacts.performClick() + true + } + binding.rgInfoType.setOnCheckedChangeListener { _, checkedId -> when (checkedId) { R.id.rb1 -> { diff --git a/app/src/main/java/com/cheng/blzb/ui/fragment/bid/publish/goods/MyGoodsAdapter.kt b/app/src/main/java/com/cheng/blzb/ui/fragment/bid/publish/goods/MyGoodsAdapter.kt index 4023cf8..bbdbd6f 100644 --- a/app/src/main/java/com/cheng/blzb/ui/fragment/bid/publish/goods/MyGoodsAdapter.kt +++ b/app/src/main/java/com/cheng/blzb/ui/fragment/bid/publish/goods/MyGoodsAdapter.kt @@ -39,14 +39,14 @@ class MyGoodsAdapter: BaseQuickAdapter(R.la "2" -> { holder.setText(R.id.tv_status, "已发布") - holder.setTextColor(R.id.tv_status, getColor(R.color.color_e3fae7)) + holder.setTextColor(R.id.tv_status, getColor(R.color.color_3bbf0f)) holder.setBackgroundResource(R.id.tv_status, R.drawable.shape_publish_status_bg2) holder.getView(R.id.tv_status).setCompoundDrawablesWithIntrinsicBounds(R.mipmap.ic_publish_status2, 0, 0, 0) } "3" -> { holder.setText(R.id.tv_status, "已驳回") - holder.setTextColor(R.id.tv_status, getColor(R.color.color_ffede7)) + holder.setTextColor(R.id.tv_status, getColor(R.color.color_ff592b)) holder.setBackgroundResource(R.id.tv_status, R.drawable.shape_publish_status_bg3) holder.getView(R.id.tv_status).setCompoundDrawablesWithIntrinsicBounds(R.mipmap.ic_publish_status3, 0, 0, 0) diff --git a/app/src/main/java/com/cheng/blzb/ui/fragment/bid/publish/goods/PublishGoodsMessageFragment.kt b/app/src/main/java/com/cheng/blzb/ui/fragment/bid/publish/goods/PublishGoodsMessageFragment.kt index f5b9f47..d5086ac 100644 --- a/app/src/main/java/com/cheng/blzb/ui/fragment/bid/publish/goods/PublishGoodsMessageFragment.kt +++ b/app/src/main/java/com/cheng/blzb/ui/fragment/bid/publish/goods/PublishGoodsMessageFragment.kt @@ -41,6 +41,7 @@ import com.huantansheng.easyphotos.EasyPhotos import com.huantansheng.easyphotos.callback.SelectCallback import com.huantansheng.easyphotos.models.album.entity.Photo import okhttp3.RequestBody.Companion.toRequestBody +import org.jetbrains.anko.sdk27.listeners.onTouch class PublishGoodsMessageFragment: BaseFragment() { private val from by lazy { arguments?.getInt("from") ?: 0 } @@ -137,13 +138,19 @@ class PublishGoodsMessageFragment: BaseFragment + binding.ivAddContacts.performClick() + true + } + binding.tvPrice1.onClick { binding.rbPrice1.isChecked = true } diff --git a/app/src/main/java/com/cheng/blzb/ui/fragment/home/HomeFragment.kt b/app/src/main/java/com/cheng/blzb/ui/fragment/home/HomeFragment.kt index d6d3c6f..0debc10 100644 --- a/app/src/main/java/com/cheng/blzb/ui/fragment/home/HomeFragment.kt +++ b/app/src/main/java/com/cheng/blzb/ui/fragment/home/HomeFragment.kt @@ -148,7 +148,7 @@ class HomeFragment : ListFragment() { page = 1 keyword = binding.etSearch.text.toString().trim() mViewModel.getAgencyList(page, keyword) + KeyboardUtils.hideSoftInput(requireActivity()) return@setOnEditorActionListener true } false diff --git a/app/src/main/java/com/cheng/blzb/ui/fragment/merchant/MerchantFragment.kt b/app/src/main/java/com/cheng/blzb/ui/fragment/merchant/MerchantFragment.kt index 55517a1..ffa1472 100644 --- a/app/src/main/java/com/cheng/blzb/ui/fragment/merchant/MerchantFragment.kt +++ b/app/src/main/java/com/cheng/blzb/ui/fragment/merchant/MerchantFragment.kt @@ -20,6 +20,7 @@ import com.cheng.blzb.manager.SearchHistoryManager import com.cheng.blzb.ui.base.BasePageAdapter import com.cheng.blzb.ui.dialog.SelectAreaDialog import com.cheng.blzb.ui.fragment.merchant.list.MerchantGoodsListFragment +import com.cheng.blzb.utils.KeyboardUtils import com.example.base.extensions.onClick import com.example.base.ui.BaseFragment @@ -33,14 +34,7 @@ class MerchantFragment : BaseFragment() } - private val pageAdapter by lazy { - BasePageAdapter( - childFragmentManager, - tabText, - fragmentList, - FragmentStatePagerAdapter.BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT - ) - } + private val pageAdapter by lazy { BasePageAdapter(childFragmentManager, tabText, fragmentList) } private var city: AreaEntity? = AreaEntity(0, name = "全国") @@ -104,6 +98,7 @@ class MerchantFragment : BaseFragment() { override suspend fun requestApi(params: ArrayMap): Result> { - return ApiFactory.apiService.searchSupplier(params).toListResult() + return ApiFactory.apiService.searchGoods(params).toListResult() } val authLiveData = MutableLiveData() diff --git a/app/src/main/java/com/cheng/blzb/ui/fragment/mine/MineFragment.kt b/app/src/main/java/com/cheng/blzb/ui/fragment/mine/MineFragment.kt index a401961..e1d83ee 100644 --- a/app/src/main/java/com/cheng/blzb/ui/fragment/mine/MineFragment.kt +++ b/app/src/main/java/com/cheng/blzb/ui/fragment/mine/MineFragment.kt @@ -3,6 +3,7 @@ package com.cheng.blzb.ui.fragment.mine import android.annotation.SuppressLint import android.text.TextUtils import android.view.View +import androidx.constraintlayout.widget.ConstraintLayout import coil.load import coil.transform.CircleCropTransformation import com.cheng.blzb.R @@ -227,6 +228,10 @@ class MineFragment : BaseFragment() { binding.tvExpireTime.setTextColor(getColor(R.color.color_bcac8e)) binding.tvExpireTime.setCompoundDrawablesWithIntrinsicBounds(0, 0, R.mipmap.ic_mine_arrow1, 0) binding.ivVipBg.setImageResource(R.mipmap.ic_mine_vip_bg1) + + val vipBgLp = binding.ivVipBg.layoutParams as ConstraintLayout.LayoutParams + vipBgLp.dimensionRatio = "h,1029:342" + binding.ivVipBg.layoutParams = vipBgLp } else if (userInfo?.vip == "2") { isEnterprise = false @@ -237,6 +242,10 @@ class MineFragment : BaseFragment() { binding.tvExpireTime.setTextColor(getColor(R.color.color_bcac8e)) binding.tvExpireTime.setCompoundDrawablesWithIntrinsicBounds(0, 0, R.mipmap.ic_mine_arrow1, 0) binding.ivVipBg.setImageResource(R.mipmap.ic_mine_vip_bg1) + + val vipBgLp = binding.ivVipBg.layoutParams as ConstraintLayout.LayoutParams + vipBgLp.dimensionRatio = "h,1029:342" + binding.ivVipBg.layoutParams = vipBgLp } else if (userInfo?.vip == "3") { isEnterprise = false @@ -247,6 +256,10 @@ class MineFragment : BaseFragment() { binding.tvExpireTime.setTextColor(getColor(R.color.color_bcac8e)) binding.tvExpireTime.setCompoundDrawablesWithIntrinsicBounds(0, 0, R.mipmap.ic_mine_arrow1, 0) binding.ivVipBg.setImageResource(R.mipmap.ic_mine_vip_bg1) + + val vipBgLp = binding.ivVipBg.layoutParams as ConstraintLayout.LayoutParams + vipBgLp.dimensionRatio = "h,1029:342" + binding.ivVipBg.layoutParams = vipBgLp } else if (userInfo?.vip == "12") { isEnterprise = true @@ -257,6 +270,10 @@ class MineFragment : BaseFragment() { binding.tvExpireTime.setTextColor(getColor(R.color.color_a6c8ba)) binding.tvExpireTime.setCompoundDrawablesWithIntrinsicBounds(0, 0, R.mipmap.ic_mine_arrow2, 0) binding.ivVipBg.setImageResource(R.mipmap.ic_mine_vip_bg2) + + val vipBgLp = binding.ivVipBg.layoutParams as ConstraintLayout.LayoutParams + vipBgLp.dimensionRatio = "h,1029:309" + binding.ivVipBg.layoutParams = vipBgLp } else if (userInfo?.vip == "11") { isEnterprise = true @@ -267,10 +284,15 @@ class MineFragment : BaseFragment() { binding.tvExpireTime.setTextColor(getColor(R.color.color_a6c8ba)) binding.tvExpireTime.setCompoundDrawablesWithIntrinsicBounds(0, 0, R.mipmap.ic_mine_arrow2, 0) binding.ivVipBg.setBackgroundResource(R.mipmap.ic_mine_vip_bg2) + + val vipBgLp = binding.ivVipBg.layoutParams as ConstraintLayout.LayoutParams + vipBgLp.dimensionRatio = "h,1029:309" + binding.ivVipBg.layoutParams = vipBgLp } binding.tvUsername.text = userInfo?.name binding.tvUserId.text = "ID:${userInfo?.user_id}" binding.btnLogin.visibility = if (LoginManager.isLogin()) View.GONE else View.VISIBLE - binding.tvSeatManage.visibility = if (isEnterprise) View.VISIBLE else View.GONE + binding.tvSeatManage.visibility = if (isEnterprise || userInfo!!.is_show_crop_add) View.VISIBLE else View.GONE + binding.tvShare.visibility = if (UserConfigManager.getShareEntity() != null) View.VISIBLE else View.GONE } } \ No newline at end of file diff --git a/app/src/main/java/com/cheng/blzb/ui/fragment/mine/auth/CompanyAuthFragment.kt b/app/src/main/java/com/cheng/blzb/ui/fragment/mine/auth/CompanyAuthFragment.kt index 8e695d4..89939d7 100644 --- a/app/src/main/java/com/cheng/blzb/ui/fragment/mine/auth/CompanyAuthFragment.kt +++ b/app/src/main/java/com/cheng/blzb/ui/fragment/mine/auth/CompanyAuthFragment.kt @@ -33,6 +33,7 @@ import com.example.base.utils.DensityUtils import com.google.gson.JsonArray import com.google.gson.JsonObject import okhttp3.RequestBody.Companion.toRequestBody +import org.jetbrains.anko.sdk27.listeners.onTouch class CompanyAuthFragment : BaseFragment() { private var companyDetail: CompanyEntity? = null @@ -118,13 +119,19 @@ class CompanyAuthFragment : BaseFragment + binding.ivAddContacts.performClick() + true + } + binding.btnNext.onClick { val name = binding.etName.text.toString().trim() if (TextUtils.isEmpty(name)) { @@ -249,8 +256,9 @@ class CompanyAuthFragment : BaseFragment() { seatCountLimit = goodsEntity!!.member_limit.toInt() if (seatCount < seatCountLimit) seatCount = seatCountLimit binding.tvSeatPrice.text = "+¥${DecimalFormat("0.##").format(goodsEntity!!.member_price.toFloat())}" - binding.tvSeatOriginPrice.text = "(原¥${DecimalFormat("0.##").format(goodsEntity!!.origin_member_price.toFloat())})" + SpanUtils.with(binding.tvSeatOriginPrice) + .append("(原¥${DecimalFormat("0.##").format(goodsEntity!!.origin_member_price.toFloat())})") + .setStrikethrough() + .create() setSeatCount() seatPrice = (seatCount - seatCountLimit) * (goodsEntity?.member_price?.toFloat() ?: 0f) @@ -275,7 +279,10 @@ class VipFragment : BaseFragment() { seatCountLimit = goodsEntity!!.member_limit.toInt() if (seatCount < seatCountLimit) seatCount = seatCountLimit binding.tvSeatPrice.text = "+¥${DecimalFormat("0.##").format(goodsEntity!!.member_price.toFloat())}" - binding.tvSeatOriginPrice.text = "(原¥${DecimalFormat("0.##").format(goodsEntity!!.origin_member_price.toFloat())})" + SpanUtils.with(binding.tvSeatOriginPrice) + .append("(原¥${DecimalFormat("0.##").format(goodsEntity!!.origin_member_price.toFloat())})") + .setStrikethrough() + .create() setSeatCount() seatPrice = (seatCount - seatCountLimit) * (goodsEntity?.member_price?.toFloat() ?: 0f) @@ -383,29 +390,30 @@ class VipFragment : BaseFragment() { private fun releasePayType() { val list = goodsEntity?.pay_type?.split(",")?.map { it.trim() }?.toList() - if (list?.find { it == "alipay" } != null) { - binding.tvAliPay.visible() - } else { - binding.tvAliPay.gone() - } - if (list?.find { it == "weixin" } != null) { + val globalPayType = UserConfigManager.getPayType() + if (list?.find { it == "weixin" } != null && globalPayType.find { it == "weixin" } != null) { binding.tvWxPay.visible() } else { binding.tvWxPay.gone() } - if (list?.find { it == "bank" } != null) { + if (list?.find { it == "alipay" } != null && globalPayType.find { it == "alipay" } != null) { + binding.tvAliPay.visible() + } else { + binding.tvAliPay.gone() + } + if (list?.find { it == "bank" } != null && globalPayType.find { it == "bank" } != null) { binding.tvBankPay.visible() } else { binding.tvBankPay.gone() } - if (goodsEntity?.pay_type!!.startsWith("weixin")) { + if (goodsEntity?.pay_type!!.startsWith("weixin") && binding.tvWxPay.isVisible) { payType = 0 } - if (goodsEntity?.pay_type!!.startsWith("alipay")) { + if (goodsEntity?.pay_type!!.startsWith("alipay") && binding.tvAliPay.isVisible) { payType = 1 } - if (goodsEntity?.pay_type!!.startsWith("bank")) { + if (goodsEntity?.pay_type!!.startsWith("bank") && binding.tvBankPay.isVisible) { payType = 2 } @@ -505,6 +513,10 @@ class VipFragment : BaseFragment() { binding.tvHour.setBackgroundResource(R.drawable.shape_vip_countdown_bg1) binding.tvMinute.setBackgroundResource(R.drawable.shape_vip_countdown_bg1) binding.tvSecond.setBackgroundResource(R.drawable.shape_vip_countdown_bg1) + binding.tvDay.setTextColor(getColor(R.color.color_7e4024)) + binding.tvHour.setTextColor(getColor(R.color.color_7e4024)) + binding.tvMinute.setTextColor(getColor(R.color.color_7e4024)) + binding.tvSecond.setTextColor(getColor(R.color.color_7e4024)) binding.tvPrice.setTextColor(getColor(R.color.color_fff4e6)) binding.tvInvoice.setTextColor(getColor(R.color.color_ecc9ae)) @@ -539,6 +551,10 @@ class VipFragment : BaseFragment() { binding.tvHour.setBackgroundResource(R.drawable.shape_vip_countdown_bg2) binding.tvMinute.setBackgroundResource(R.drawable.shape_vip_countdown_bg2) binding.tvSecond.setBackgroundResource(R.drawable.shape_vip_countdown_bg2) + binding.tvDay.setTextColor(getColor(R.color.color_09321d)) + binding.tvHour.setTextColor(getColor(R.color.color_09321d)) + binding.tvMinute.setTextColor(getColor(R.color.color_09321d)) + binding.tvSecond.setTextColor(getColor(R.color.color_09321d)) binding.tvPrice.setTextColor(getColor(R.color.color_f6fbd0)) binding.tvInvoice.setTextColor(getColor(R.color.color_7ead99)) diff --git a/app/src/main/java/com/cheng/blzb/ui/fragment/search/list/SearchListFragment.kt b/app/src/main/java/com/cheng/blzb/ui/fragment/search/list/SearchListFragment.kt index 1e1d7d3..566a317 100644 --- a/app/src/main/java/com/cheng/blzb/ui/fragment/search/list/SearchListFragment.kt +++ b/app/src/main/java/com/cheng/blzb/ui/fragment/search/list/SearchListFragment.kt @@ -87,6 +87,7 @@ class SearchListFragment : ListFragment - - - - - - + android:layout_height="match_parent"> - + android:layout_height="match_parent"> - + android:layout_height="0dp" + android:src="@mipmap/ic_merchant_detail_top_bg" + app:layout_constraintDimensionRatio="h,1125:528" + app:layout_constraintTop_toTopOf="parent" /> - + + + + + + + android:layout_height="wrap_content"> - + android:layout_marginStart="@dimen/dp_9" + android:layout_marginTop="@dimen/dp_13" + android:layout_marginEnd="@dimen/dp_9" + app:hl_cornerRadius="@dimen/dp_12" + app:hl_shadowColor="@color/color_shadow" + app:hl_shadowLimit="@dimen/dp_7" + app:layout_constraintTop_toTopOf="parent"> - - - - - - - - - - - - + android:paddingStart="@dimen/dp_12" + android:paddingTop="@dimen/dp_16" + android:paddingEnd="@dimen/dp_12"> - + - + - + + + + + + + + + + + + android:layout_marginStart="@dimen/dp_9" + android:layout_marginEnd="@dimen/dp_9" + app:hl_cornerRadius="@dimen/dp_12" + app:hl_shadowColor="@color/color_shadow" + app:hl_shadowLimit="@dimen/dp_7" + app:layout_constraintTop_toBottomOf="@id/layout_goods_info"> - - - - - - - - - - - - - - - - - - + android:paddingStart="@dimen/dp_12" + android:paddingTop="@dimen/dp_16" + android:paddingEnd="@dimen/dp_12" + android:paddingBottom="@dimen/dp_16"> - - + - + + + + + + + + + + + + + + + + + + + + + + + + + - + app:layout_constraintTop_toBottomOf="@id/tv_vip_name" + app:layout_constraintStart_toStartOf="@id/tv_vip_name" /> #C5FFE1 #A6C8BA #7E4024 + #09321D #F11E1E #797069 #8A7570