完善合作商相关页面

This commit is contained in:
wangyu 2026-01-06 10:56:11 +08:00
parent 4ed5297c1f
commit 8ed2fedbe2
30 changed files with 745 additions and 36 deletions

View File

@ -42,6 +42,8 @@ object EventConstants {
const val JUMP_TO_SUBSCRIBE = "client.jump.to.subscribe" //跳转到订阅 const val JUMP_TO_SUBSCRIBE = "client.jump.to.subscribe" //跳转到订阅
const val JUMP_TO_GOODS_DETAIL = "client.jump.to.goods.detail" //跳转供应商商品详情
const val JUMP_TO_PUBLISH = "client.jump.to.publish" //跳转到发布 const val JUMP_TO_PUBLISH = "client.jump.to.publish" //跳转到发布
const val JUMP_TO_ABOUT_US = "client.jump.to.about.us" //界面跳转 const val JUMP_TO_ABOUT_US = "client.jump.to.about.us" //界面跳转

View File

@ -8,7 +8,7 @@ import com.cheng.bole.bean.ContactsInfoBean
class AddBidContactsAdapter: BaseQuickAdapter<ContactsInfoBean, BaseViewHolder>(R.layout.listitem_publish_bid_contacts) { class AddBidContactsAdapter: BaseQuickAdapter<ContactsInfoBean, BaseViewHolder>(R.layout.listitem_publish_bid_contacts) {
override fun convert(holder: BaseViewHolder, item: ContactsInfoBean) { override fun convert(holder: BaseViewHolder, item: ContactsInfoBean) {
holder.setText(R.id.tv_name, item.name)
holder.setText(R.id.tv_phone, item.phone) holder.setText(R.id.tv_phone, item.phone)
holder.setText(R.id.tv_name, "${item.name} | ${item.job}")
} }
} }

View File

@ -144,11 +144,12 @@ class HomeFragment : ListFragment<FragmentHomeBinding, HomeViewModel, BidItemBea
} }
mViewModel.totalLiveData.observe(this) { mViewModel.totalLiveData.observe(this) {
val total = it.toInt()
SpanUtils.with(binding.tvUpdateCount) SpanUtils.with(binding.tvUpdateCount)
.append("已更新") .append("已更新")
.append(DecimalFormat("0.#").format(it.toInt()/ 10000f)) .append(if (total < 10000) "$total" else "${DecimalFormat("0.#").format(total / 10000f)}")
.setForegroundColor(getColor(R.color.color_ff2222)) .setForegroundColor(getColor(R.color.color_ff2222))
.append("") .append("")
.create() .create()
} }

View File

@ -0,0 +1,18 @@
package com.cheng.bole.ui.fragment.merchant
import com.chad.library.adapter.base.BaseQuickAdapter
import com.chad.library.adapter.base.viewholder.BaseViewHolder
import com.cheng.bole.R
import com.cheng.bole.bean.ContactsInfoBean
class MerchantContactsAdapter: BaseQuickAdapter<ContactsInfoBean, BaseViewHolder>(R.layout.listitem_merchant_contacts) {
init {
addChildClickViewIds(R.id.iv_call)
}
override fun convert(holder: BaseViewHolder, item: ContactsInfoBean) {
holder.setText(R.id.tv_phone, item.phone)
holder.setText(R.id.tv_name, "${item.name} | ${item.job}")
}
}

View File

@ -0,0 +1,138 @@
package com.cheng.bole.ui.fragment.merchant.detail
import android.annotation.SuppressLint
import android.content.Intent
import android.os.Build
import android.text.TextUtils
import android.view.ViewTreeObserver
import androidx.constraintlayout.widget.ConstraintLayout
import androidx.core.net.toUri
import androidx.viewpager2.widget.ViewPager2
import com.cheng.bole.R
import com.cheng.bole.bean.MerchantGoodsBean
import com.cheng.bole.common.Constants
import com.cheng.bole.common.EventConstants
import com.cheng.bole.databinding.FragmentMerchantGoodsDetailBinding
import com.cheng.bole.manager.EventReportManager
import com.cheng.bole.ui.activity.PublicActivity
import com.cheng.bole.ui.fragment.merchant.MerchantContactsAdapter
import com.cheng.bole.ui.fragment.merchant.home.MerchantHomeFragment
import com.cheng.bole.ui.fragment.photo.PhotoViewFragment
import com.example.base.decoration.SpacesItemDecoration
import com.example.base.extensions.onClick
import com.example.base.ui.BaseFragment
import com.example.base.utils.DensityUtils
import com.example.base.utils.SpanUtils
import java.text.DecimalFormat
class MerchantGoodsDetailFragment : BaseFragment<FragmentMerchantGoodsDetailBinding, MerchantGoodsDetailViewModel>() {
private var goodsInfo: MerchantGoodsBean? = null
private val contactsAdapter by lazy { MerchantContactsAdapter() }
private val imageAdapter by lazy { MerchantGoodsImageAdapter() }
override fun initView() {
super.initView()
mTitleBar?.background = null
binding.tvPrice.typeface = Constants.dDIN_PRO_M
binding.viewPager.adapter = imageAdapter
binding.rvContacts.adapter = contactsAdapter
binding.rvContacts.addItemDecoration(SpacesItemDecoration(DensityUtils.dp2px(8f)))
binding.ivTopBg.viewTreeObserver.addOnGlobalLayoutListener(object : ViewTreeObserver.OnGlobalLayoutListener {
override fun onGlobalLayout() {
(binding.viewPager.layoutParams as ConstraintLayout.LayoutParams).topMargin = binding.mTitleBar.height + DensityUtils.dp2px(10f)
(binding.nestedScrollView.layoutParams as ConstraintLayout.LayoutParams).topMargin = (binding.viewPager.height * 276f / 343f).toInt()
binding.layoutContent.setupWith(binding.root).setFrameClearDrawable(binding.layoutContent.background).setBlurRadius(5f)
binding.ivTopBg.viewTreeObserver.removeOnGlobalLayoutListener(this)
}
})
}
override fun initData() {
super.initData()
goodsInfo = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
arguments?.getSerializable("item", MerchantGoodsBean::class.java)
} else {
arguments?.getSerializable("item") as? MerchantGoodsBean
}
setData()
mViewModel.sendAuth()
EventReportManager.eventReport(EventConstants.JUMP_TO_GOODS_DETAIL, "", "{\"id\": ${goodsInfo?.id}}")
}
override fun initListener() {
super.initListener()
binding.btnNext.onClick {
PublicActivity.start(requireActivity(), MerchantHomeFragment::class.java, Pair("item", goodsInfo))
}
binding.viewPager.registerOnPageChangeCallback(object : ViewPager2.OnPageChangeCallback() {
override fun onPageSelected(position: Int) {
super.onPageSelected(position)
binding.tvIndicator.text = "${position + 1}/${imageAdapter.data.size}"
}
})
imageAdapter.setOnItemClickListener { _, _, position ->
val urlList = imageAdapter.data.map { it.url }
PublicActivity.start(requireContext(), PhotoViewFragment::class.java, Pair("photos", urlList), Pair("index", position))
}
contactsAdapter.setOnItemChildClickListener { _, view, i ->
val item = contactsAdapter.getItem(i)
when (view.id) {
R.id.iv_call -> {
val intent = Intent(Intent.ACTION_DIAL, "tel:${item.phone}".toUri())
startActivity(intent)
}
}
}
}
override fun initObserve() {
super.initObserve()
}
@SuppressLint("SetTextI18n")
private fun setData() {
if (goodsInfo != null) {
binding.tvCompanyAvatar.text = goodsInfo!!.company.company_name.substring(0, 2) + "\n" + goodsInfo!!.company.company_name.substring(2, 4)
binding.tvCompanyName.text = goodsInfo!!.company.company_name
binding.tvCompanyCity.text = goodsInfo!!.company.city_name
binding.tvExtra.text = if (!TextUtils.isEmpty(goodsInfo!!.company.extra?.toString())) goodsInfo!!.company.extra.toString() else ""
contactsAdapter.setList(goodsInfo!!.contact)
imageAdapter.setList(goodsInfo!!.file)
binding.tvIndicator.text = "1/${imageAdapter.data.size}"
binding.tvGoodsName.text = goodsInfo!!.goods_name
try {
if (goodsInfo!!.goods_price.toFloat() > 100000000) {
SpanUtils.with(binding.tvPrice)
.append(DecimalFormat("0.##").format(goodsInfo!!.goods_price.toFloat() / 100000000))
.appendSpace(DensityUtils.dp2px(4f))
.append("亿")
.setFontSize(12, true)
.create()
} else if (goodsInfo!!.goods_price.toFloat() > 10000) {
SpanUtils.with(binding.tvPrice)
.append(DecimalFormat("0.##").format(goodsInfo!!.goods_price.toFloat() / 10000))
.appendSpace(DensityUtils.dp2px(4f))
.append("")
.setFontSize(12, true)
.create()
} else {
binding.tvPrice.text = DecimalFormat("0.##").format(goodsInfo!!.goods_price.toFloat())
}
} catch (e: Exception) {
binding.tvPrice.text = goodsInfo!!.goods_price
}
binding.tvLocation.text = if (TextUtils.isEmpty(goodsInfo!!.city_name)) "全国" else goodsInfo!!.city_name
binding.tvViewCount.text = "已浏览 ${if (!TextUtils.isEmpty(goodsInfo!!.view_count)) goodsInfo!!.view_count else 0}"
}
}
}

View File

@ -0,0 +1,21 @@
package com.cheng.bole.ui.fragment.merchant.detail
import com.cheng.bole.net.ApiFactory
import com.example.base.utils.L
import com.example.base.viewmodel.BaseViewModel
import com.google.gson.JsonObject
import okhttp3.RequestBody.Companion.toRequestBody
class MerchantGoodsDetailViewModel: BaseViewModel() {
fun sendAuth() {
launchOnUiTryCatch({
val jsonObject = JsonObject()
jsonObject.addProperty("scene", "info")
jsonObject.addProperty("count", 1)
ApiFactory.apiService.sendAuth(jsonObject.toString().toRequestBody())
}, {
L.d(it)
})
}
}

View File

@ -0,0 +1,18 @@
package com.cheng.bole.ui.fragment.merchant.detail
import android.widget.ImageView
import coil.load
import coil.transform.RoundedCornersTransformation
import com.chad.library.adapter.base.BaseQuickAdapter
import com.chad.library.adapter.base.viewholder.BaseViewHolder
import com.cheng.bole.R
import com.cheng.bole.bean.UploadFileEntity
import com.example.base.utils.DensityUtils
class MerchantGoodsImageAdapter: BaseQuickAdapter<UploadFileEntity, BaseViewHolder>(R.layout.listitem_merchant_goods_image) {
override fun convert(holder: BaseViewHolder, item: UploadFileEntity) {
holder.getView<ImageView>(R.id.iv_cover).load(item.url) {
transformations(RoundedCornersTransformation(DensityUtils.dp2px(16f).toFloat()))
}
}
}

View File

@ -0,0 +1,69 @@
package com.cheng.bole.ui.fragment.merchant.home
import android.graphics.Typeface
import android.os.Build
import android.widget.TextView
import androidx.fragment.app.Fragment
import androidx.fragment.app.FragmentStatePagerAdapter
import com.angcyo.tablayout.delegate.ViewPager1Delegate
import com.cheng.bole.R
import com.cheng.bole.bean.MerchantGoodsBean
import com.cheng.bole.common.Constants
import com.cheng.bole.common.EventConstants
import com.cheng.bole.databinding.FragmentMerchantHomeBinding
import com.cheng.bole.manager.EventReportManager
import com.cheng.bole.ui.base.BasePageAdapter
import com.cheng.bole.ui.fragment.merchant.list.MerchantGoodsListFragment
import com.example.base.ui.BaseFragment
class MerchantHomeFragment : BaseFragment<FragmentMerchantHomeBinding, MerchantHomeViewModel>() {
private var goodsInfo: MerchantGoodsBean? = null
private val tabText = listOf("全部", "服务", "产品", "其他")
private val fragmentList by lazy { mutableListOf<Fragment>() }
private val pageAdapter by lazy {
BasePageAdapter(
childFragmentManager,
tabText,
fragmentList,
FragmentStatePagerAdapter.BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT
)
}
override fun initView() {
super.initView()
mTitleBar?.background = null
goodsInfo = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
arguments?.getSerializable("item", MerchantGoodsBean::class.java)
} else {
arguments?.getSerializable("item") as? MerchantGoodsBean
}
binding.tvTitle.text = goodsInfo?.company?.company_name
initFragment()
binding.viewPager.adapter = pageAdapter
binding.viewPager.offscreenPageLimit = fragmentList.size
binding.tabLayout.setupViewPager(ViewPager1Delegate.install(binding.viewPager, binding.tabLayout))
}
private fun initFragment() {
fragmentList.add(MerchantGoodsListFragment.newInstance("", goodsInfo!!.user_id))
fragmentList.add(MerchantGoodsListFragment.newInstance("1", goodsInfo!!.user_id))
fragmentList.add(MerchantGoodsListFragment.newInstance("2", goodsInfo!!.user_id))
fragmentList.add(MerchantGoodsListFragment.newInstance("3", goodsInfo!!.user_id))
}
override fun initListener() {
super.initListener()
binding.tabLayout.observeIndexChange { fromIndex, toIndex, _, _ ->
binding.viewPager.currentItem = toIndex
if (fromIndex != -1) {
(binding.tabLayout.getChildAt(fromIndex) as TextView).typeface = Typeface.DEFAULT
(binding.tabLayout.getChildAt(fromIndex) as TextView).setBackgroundResource(R.drawable.shape_push_bid_type_default)
}
(binding.tabLayout.getChildAt(toIndex) as TextView).typeface = Constants.douyinsansB
(binding.tabLayout.getChildAt(toIndex) as TextView).setBackgroundResource(R.drawable.shape_push_bid_type_checked)
}
}
}

View File

@ -0,0 +1,6 @@
package com.cheng.bole.ui.fragment.merchant.home
import com.example.base.viewmodel.BaseViewModel
class MerchantHomeViewModel: BaseViewModel() {
}

View File

@ -5,6 +5,7 @@ import com.cheng.bole.R
import com.cheng.bole.bean.MerchantGoodsBean import com.cheng.bole.bean.MerchantGoodsBean
import com.cheng.bole.databinding.FragmentMerchantGoodsListBinding import com.cheng.bole.databinding.FragmentMerchantGoodsListBinding
import com.cheng.bole.ui.activity.PublicActivity import com.cheng.bole.ui.activity.PublicActivity
import com.cheng.bole.ui.fragment.merchant.detail.MerchantGoodsDetailFragment
import com.cheng.bole.ui.fragment.mine.vip.VipFragment import com.cheng.bole.ui.fragment.mine.vip.VipFragment
import com.example.base.decoration.FirstItemOffsetDecoration import com.example.base.decoration.FirstItemOffsetDecoration
import com.example.base.ui.list.ListFragment import com.example.base.ui.list.ListFragment
@ -63,9 +64,10 @@ class MerchantGoodsListFragment : ListFragment<FragmentMerchantGoodsListBinding,
super.initObserve() super.initObserve()
mViewModel.authLiveData.observe(this) { mViewModel.authLiveData.observe(this) {
if (it.auth) { if (it.auth) {
// PublicActivity.start(requireActivity(), SupplierGoodsDetailFragment::class.java, Pair("item", item)) PublicActivity.start(requireActivity(), MerchantGoodsDetailFragment::class.java, Pair("item", item))
} else { } else {
PublicActivity.start(requireContext(), VipFragment::class.java, Pair("origin", "view_goods")) // PublicActivity.start(requireContext(), VipFragment::class.java, Pair("origin", "view_goods"))
PublicActivity.start(requireActivity(), MerchantGoodsDetailFragment::class.java, Pair("item", item))
} }
} }
} }

View File

@ -10,8 +10,12 @@ import com.cheng.bole.utils.BitmapUtils
class PhotoViewAdapter : BaseQuickAdapter<String, BaseViewHolder>(R.layout.listitem_photo_view) { class PhotoViewAdapter : BaseQuickAdapter<String, BaseViewHolder>(R.layout.listitem_photo_view) {
override fun convert(holder: BaseViewHolder, item: String) { override fun convert(holder: BaseViewHolder, item: String) {
if (item.startsWith("http")) {
holder.getView<PhotoView>(R.id.iv_photo).load(item)
} else {
BitmapUtils.compressImg(context, item) { BitmapUtils.compressImg(context, item) {
holder.getView<PhotoView>(R.id.iv_photo).load(it) holder.getView<PhotoView>(R.id.iv_photo).load(it)
} }
} }
} }
}

View File

@ -77,10 +77,10 @@
android:paddingStart="@dimen/dp_4" android:paddingStart="@dimen/dp_4"
android:paddingEnd="@dimen/dp_4" android:paddingEnd="@dimen/dp_4"
android:text="全国" android:text="全国"
android:textColor="#585D6C" android:textColor="@color/color_585d6c"
android:textSize="@dimen/sp_11" android:textSize="@dimen/sp_11"
app:csb_cornerRadius="@dimen/dp_3" app:csb_cornerRadius="@dimen/dp_3"
app:csb_fillColor="#F4F6FA" app:csb_fillColor="@color/color_f4f6fa"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/tv_content" /> app:layout_constraintTop_toBottomOf="@id/tv_content" />
@ -151,6 +151,7 @@
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:orientation="vertical" android:orientation="vertical"
android:overScrollMode="never"
app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager" app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"
tools:itemCount="2" tools:itemCount="2"
tools:listitem="@layout/listitem_bid_detail_contact" /> tools:listitem="@layout/listitem_bid_detail_contact" />

View File

@ -180,7 +180,7 @@
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginStart="@dimen/dp_14" android:layout_marginStart="@dimen/dp_14"
android:text="已更新2.4万条" android:text="已更新0条"
android:textColor="@color/color_666666" android:textColor="@color/color_666666"
android:textSize="@dimen/sp_12" android:textSize="@dimen/sp_12"
app:layout_constraintBottom_toBottomOf="@id/tv_bid_title" app:layout_constraintBottom_toBottomOf="@id/tv_bid_title"

View File

@ -0,0 +1,289 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent">
<androidx.appcompat.widget.AppCompatImageView
android:id="@+id/iv_top_bg"
android:layout_width="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" />
<androidx.viewpager2.widget.ViewPager2
android:id="@+id/viewPager"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_marginStart="@dimen/dp_16"
android:layout_marginTop="100dp"
android:layout_marginEnd="@dimen/dp_16"
app:layout_constraintDimensionRatio="h,1:1"
app:layout_constraintTop_toTopOf="parent" />
<com.cheng.bole.widget.CommonShapeView
android:id="@+id/tv_indicator"
android:layout_width="@dimen/dp_40"
android:layout_height="@dimen/dp_20"
android:layout_marginEnd="@dimen/dp_28"
android:layout_marginBottom="@dimen/dp_12"
android:text="1/4"
android:textColor="@color/white"
android:textSize="@dimen/sp_12"
app:csb_cornerRadius="@dimen/dp_10"
app:csb_fillColor="#80000000"
app:csb_strokeColor="@color/white"
app:csb_strokeWidth="0.5dp"
app:layout_constraintBottom_toTopOf="@id/nestedScrollView"
app:layout_constraintEnd_toEndOf="parent" />
<androidx.core.widget.NestedScrollView
android:id="@+id/nestedScrollView"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_marginTop="276dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintTop_toTopOf="@id/viewPager">
<eightbitlab.com.blurview.BlurView
android:id="@+id/layout_content"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/shape_trans_top_line_cor20"
app:blurOverlayColor="#4DFFFFFF">
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<com.lihang.ShadowLayout
android:id="@+id/layout_goods_info"
android:layout_width="match_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="#0d4a4f5b"
app:hl_shadowLimit="@dimen/dp_7"
app:layout_constraintTop_toTopOf="parent">
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingStart="@dimen/dp_12"
android:paddingTop="@dimen/dp_16"
android:paddingEnd="@dimen/dp_12">
<TextView
android:id="@+id/tv_price"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="18.8"
android:textColor="@color/color_ff493c"
android:textSize="@dimen/sp_26"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/tv_goods_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dp_6"
android:fontFamily="sans-serif-medium"
android:text="室内木门"
android:textColor="@color/color_1a1a1a"
android:textSize="@dimen/sp_18"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/tv_price" />
<TextView
android:id="@+id/tv_view_count"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="已浏览 0"
android:textColor="@color/color_999999"
android:textSize="@dimen/sp_10"
app:layout_constraintBottom_toBottomOf="@id/tv_price"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="@id/tv_price" />
<com.cheng.bole.widget.CommonShapeView
android:id="@+id/tv_location"
android:layout_width="wrap_content"
android:layout_height="@dimen/dp_18"
android:layout_marginTop="@dimen/dp_8"
android:paddingStart="@dimen/dp_4"
android:paddingEnd="@dimen/dp_4"
android:text="全国"
android:textColor="@color/color_585d6c"
android:textSize="@dimen/sp_11"
app:csb_cornerRadius="@dimen/dp_2"
app:csb_fillColor="@color/color_f4f6fa"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/tv_goods_name" />
<View
android:id="@+id/divider"
android:layout_width="match_parent"
android:layout_height="@dimen/dp_2"
android:layout_marginTop="@dimen/dp_22"
android:background="@drawable/shape_dde2eb_dash_divider_h"
app:layout_constraintTop_toBottomOf="@id/tv_location" />
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rv_contacts"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:overScrollMode="never"
app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"
app:layout_constraintTop_toBottomOf="@id/divider"
tools:itemCount="1"
tools:listitem="@layout/listitem_merchant_contacts" />
</androidx.constraintlayout.widget.ConstraintLayout>
</com.lihang.ShadowLayout>
<com.lihang.ShadowLayout
android:id="@+id/layout_company_info"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/dp_9"
android:layout_marginEnd="@dimen/dp_9"
app:hl_cornerRadius="@dimen/dp_12"
app:hl_shadowColor="#0d4a4f5b"
app:hl_shadowLimit="@dimen/dp_7"
app:layout_constraintTop_toBottomOf="@id/layout_goods_info">
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingStart="@dimen/dp_12"
android:paddingTop="@dimen/dp_16"
android:paddingEnd="@dimen/dp_12"
android:paddingBottom="@dimen/dp_16">
<TextView
android:id="@+id/tv_company_avatar"
android:layout_width="@dimen/dp_50"
android:layout_height="@dimen/dp_50"
android:layout_marginStart="@dimen/dp_12"
android:background="@mipmap/ic_company_name_avatar_bg"
android:gravity="center"
android:text="永康\n市欧"
android:textColor="@color/white"
android:textSize="@dimen/sp_15"
android:textStyle="bold"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/tv_company_name"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/dp_12"
android:layout_marginTop="@dimen/dp_2"
android:layout_marginEnd="@dimen/dp_12"
android:ellipsize="end"
android:maxLines="1"
android:singleLine="true"
android:text="永康市欧努家具有限公司"
android:textColor="@color/color_1a1a1a"
android:textSize="@dimen/sp_14"
app:layout_constraintEnd_toStartOf="@id/btn_next"
app:layout_constraintStart_toEndOf="@id/tv_company_avatar"
app:layout_constraintTop_toTopOf="@id/tv_company_avatar" />
<com.cheng.bole.widget.CommonShapeView
android:id="@+id/tv_company_city"
android:layout_width="wrap_content"
android:layout_height="@dimen/dp_18"
android:layout_marginBottom="@dimen/dp_5"
android:paddingStart="@dimen/dp_4"
android:paddingEnd="@dimen/dp_4"
android:text="浙江"
android:textColor="@color/color_0ca8ff"
android:textSize="@dimen/sp_11"
app:csb_cornerRadius="@dimen/dp_2"
app:csb_fillColor="@color/color_e6f6ff"
app:layout_constraintBottom_toBottomOf="@id/tv_company_avatar"
app:layout_constraintStart_toStartOf="@id/tv_company_name" />
<com.cheng.bole.widget.CommonShapeView
android:id="@+id/btn_next"
android:layout_width="@dimen/dp_60"
android:layout_height="@dimen/dp_28"
android:text="查看"
android:textColor="@color/color_125ffe"
android:textSize="@dimen/sp_14"
app:csb_cornerRadius="@dimen/dp_25"
app:csb_strokeColor="@color/color_125ffe"
app:csb_strokeWidth="@dimen/dp_1"
app:layout_constraintBottom_toBottomOf="@id/tv_company_avatar"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="@id/tv_company_avatar" />
</androidx.constraintlayout.widget.ConstraintLayout>
</com.lihang.ShadowLayout>
<com.lihang.ShadowLayout
android:id="@+id/layout_other"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/dp_9"
android:layout_marginEnd="@dimen/dp_9"
app:hl_cornerRadius="@dimen/dp_12"
app:hl_shadowColor="#0d4a4f5b"
app:hl_shadowLimit="@dimen/dp_7"
app:layout_constraintTop_toBottomOf="@id/layout_company_info">
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingStart="@dimen/dp_12"
android:paddingTop="@dimen/dp_16"
android:paddingEnd="@dimen/dp_12"
android:paddingBottom="@dimen/dp_16">
<TextView
android:id="@+id/tv_extra_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="-其他说明-"
android:textColor="@color/color_999999"
android:textSize="@dimen/sp_14"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/tv_extra"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dp_16"
android:text="专业生产室内各类木门,学校门酒店门等。"
android:textColor="@color/color_1a1a1a"
android:textSize="@dimen/sp_14"
app:layout_constraintHeight_min="@dimen/dp_100"
app:layout_constraintTop_toBottomOf="@+id/tv_extra_title" />
</androidx.constraintlayout.widget.ConstraintLayout>
</com.lihang.ShadowLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
</eightbitlab.com.blurview.BlurView>
</androidx.core.widget.NestedScrollView>
<com.example.base.widget.TitleBar
android:id="@+id/mTitleBar"
style="@style/Custom.TitleBar"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:navigationIcon="@drawable/ic_back_black"
app:title=" " />
</androidx.constraintlayout.widget.ConstraintLayout>

View File

@ -0,0 +1,90 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent">
<androidx.appcompat.widget.AppCompatImageView
android:id="@+id/iv_top_bg"
android:layout_width="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" />
<com.example.base.widget.TitleBar
android:id="@+id/mTitleBar"
style="@style/Custom.TitleBar"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:navigationIcon="@drawable/ic_back_black"
app:title=" " >
<TextView
android:id="@+id/tv_title"
android:layout_width="wrap_content"
android:layout_gravity="center"
android:singleLine="true"
style="@style/_titleTextAppearance"
android:layout_height="wrap_content"/>
</com.example.base.widget.TitleBar>
<com.angcyo.tablayout.DslTabLayout
android:id="@+id/tabLayout"
android:layout_width="match_parent"
android:layout_height="@dimen/dp_34"
android:layout_marginTop="@dimen/dp_16"
app:layout_constraintTop_toBottomOf="@id/mTitleBar"
app:tab_deselect_color="@color/color_1a1a1a"
app:tab_draw_indicator="false"
app:tab_enable_gradient_text_size="false"
app:tab_enable_text_bold="false"
app:tab_item_auto_equ_width="false"
app:tab_select_color="@color/color_125ffe"
app:tab_text_max_size="@dimen/sp_16"
app:tab_text_min_size="@dimen/sp_14">
<TextView
android:layout_width="@dimen/dp_54"
android:layout_height="@dimen/dp_34"
android:layout_marginStart="@dimen/dp_16"
android:background="@drawable/shape_white_cor6"
android:gravity="center"
android:text="全部" />
<TextView
android:layout_width="@dimen/dp_54"
android:layout_height="@dimen/dp_34"
android:layout_marginStart="@dimen/dp_12"
android:background="@drawable/shape_white_cor6"
android:gravity="center"
android:text="服务" />
<TextView
android:layout_width="@dimen/dp_54"
android:layout_height="@dimen/dp_34"
android:layout_marginStart="@dimen/dp_12"
android:background="@drawable/shape_white_cor6"
android:gravity="center"
android:text="产品" />
<TextView
android:layout_width="@dimen/dp_54"
android:layout_height="@dimen/dp_34"
android:layout_marginStart="@dimen/dp_12"
android:background="@drawable/shape_white_cor6"
android:gravity="center"
android:text="其他" />
</com.angcyo.tablayout.DslTabLayout>
<androidx.viewpager.widget.ViewPager
android:id="@+id/viewPager"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_marginTop="@dimen/dp_9"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintTop_toBottomOf="@id/tabLayout" />
</androidx.constraintlayout.widget.ConstraintLayout>

View File

@ -327,8 +327,7 @@
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginStart="@dimen/dp_40" android:layout_marginStart="@dimen/dp_40"
android:paddingTop="@dimen/dp_16" android:overScrollMode="never"
android:paddingBottom="@dimen/dp_16"
android:visibility="gone" android:visibility="gone"
app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager" app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"
app:layout_constraintEnd_toStartOf="@id/iv_add_contacts" app:layout_constraintEnd_toStartOf="@id/iv_add_contacts"
@ -357,8 +356,8 @@
android:id="@+id/tv_info_title" android:id="@+id/tv_info_title"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:drawablePadding="@dimen/dp_6"
android:layout_marginTop="@dimen/dp_16" android:layout_marginTop="@dimen/dp_16"
android:drawablePadding="@dimen/dp_6"
android:fontFamily="sans-serif-medium" android:fontFamily="sans-serif-medium"
android:text="项目信息" android:text="项目信息"
android:textColor="@color/color_1a1a1a" android:textColor="@color/color_1a1a1a"
@ -445,8 +444,8 @@
android:textColor="@color/color_999999" android:textColor="@color/color_999999"
android:textSize="@dimen/sp_10" android:textSize="@dimen/sp_10"
android:visibility="gone" android:visibility="gone"
app:layout_constraintTop_toTopOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintStart_toStartOf="parent" /> app:layout_constraintTop_toTopOf="parent" />
<androidx.appcompat.widget.AppCompatEditText <androidx.appcompat.widget.AppCompatEditText
android:id="@+id/et_info" android:id="@+id/et_info"

View File

@ -213,8 +213,8 @@
android:id="@+id/tv_price_title" android:id="@+id/tv_price_title"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:text="价格"
android:layout_marginTop="@dimen/dp_16" android:layout_marginTop="@dimen/dp_16"
android:text="价格"
app:layout_constraintTop_toBottomOf="@id/et_name" /> app:layout_constraintTop_toBottomOf="@id/et_name" />
<RadioGroup <RadioGroup
@ -233,18 +233,18 @@
android:id="@+id/rb_price1" android:id="@+id/rb_price1"
android:layout_width="@dimen/dp_18" android:layout_width="@dimen/dp_18"
android:layout_height="@dimen/dp_18" android:layout_height="@dimen/dp_18"
android:checked="true"
android:background="@drawable/selector_rb" android:background="@drawable/selector_rb"
android:button="@null" /> android:button="@null"
android:checked="true" />
<TextView <TextView
android:id="@+id/tv_price1" android:id="@+id/tv_price1"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginStart="@dimen/dp_10"
android:text="价格" android:text="价格"
android:textColor="@color/color_1a1a1a" android:textColor="@color/color_1a1a1a"
android:textSize="@dimen/sp_14" android:textSize="@dimen/sp_14" />
android:layout_marginStart="@dimen/dp_10"/>
<RadioButton <RadioButton
android:id="@+id/rb_price2" android:id="@+id/rb_price2"
@ -258,10 +258,10 @@
android:id="@+id/tv_price2" android:id="@+id/tv_price2"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginStart="@dimen/dp_10"
android:text="自定义" android:text="自定义"
android:textColor="@color/color_1a1a1a" android:textColor="@color/color_1a1a1a"
android:textSize="@dimen/sp_14" android:textSize="@dimen/sp_14" />
android:layout_marginStart="@dimen/dp_10"/>
</RadioGroup> </RadioGroup>
@ -270,8 +270,8 @@
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginStart="@dimen/dp_68" android:layout_marginStart="@dimen/dp_68"
android:background="@null"
android:layout_marginTop="@dimen/dp_16" android:layout_marginTop="@dimen/dp_16"
android:background="@null"
android:gravity="center_vertical" android:gravity="center_vertical"
android:hint="请输入" android:hint="请输入"
android:inputType="numberDecimal" android:inputType="numberDecimal"
@ -376,6 +376,7 @@
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginStart="@dimen/dp_40" android:layout_marginStart="@dimen/dp_40"
android:overScrollMode="never"
android:paddingTop="@dimen/dp_16" android:paddingTop="@dimen/dp_16"
android:paddingBottom="@dimen/dp_16" android:paddingBottom="@dimen/dp_16"
android:visibility="gone" android:visibility="gone"
@ -406,8 +407,8 @@
android:id="@+id/tv_explain_title" android:id="@+id/tv_explain_title"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:drawablePadding="@dimen/dp_6"
android:layout_marginTop="@dimen/dp_16" android:layout_marginTop="@dimen/dp_16"
android:drawablePadding="@dimen/dp_6"
android:fontFamily="sans-serif-medium" android:fontFamily="sans-serif-medium"
android:text="说明" android:text="说明"
android:textColor="@color/color_1a1a1a" android:textColor="@color/color_1a1a1a"
@ -460,8 +461,8 @@
android:text="第一张图将作为缩略图" android:text="第一张图将作为缩略图"
android:textColor="@color/color_666666" android:textColor="@color/color_666666"
android:textSize="@dimen/sp_12" android:textSize="@dimen/sp_12"
app:layout_constraintTop_toBottomOf="@id/et_explain" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintStart_toStartOf="parent" /> app:layout_constraintTop_toBottomOf="@id/et_explain" />
<TextView <TextView
android:id="@+id/tv_image_count" android:id="@+id/tv_image_count"

View File

@ -158,7 +158,7 @@
android:layout_marginTop="@dimen/dp_5" android:layout_marginTop="@dimen/dp_5"
android:layout_marginEnd="@dimen/dp_9" android:layout_marginEnd="@dimen/dp_9"
app:hl_cornerRadius="@dimen/dp_10" app:hl_cornerRadius="@dimen/dp_10"
app:hl_shadowColor="#0f000000" app:hl_shadowColor="#0d4a4f5b"
app:hl_shadowLimit="@dimen/dp_7" app:hl_shadowLimit="@dimen/dp_7"
app:layout_constraintTop_toBottomOf="@id/tv_recommend_title"> app:layout_constraintTop_toBottomOf="@id/tv_recommend_title">

View File

@ -6,7 +6,7 @@
android:layout_marginStart="@dimen/dp_5" android:layout_marginStart="@dimen/dp_5"
android:layout_marginEnd="@dimen/dp_5" android:layout_marginEnd="@dimen/dp_5"
app:hl_cornerRadius="@dimen/dp_8" app:hl_cornerRadius="@dimen/dp_8"
app:hl_shadowColor="#0f000000" app:hl_shadowColor="#0d4a4f5b"
app:hl_shadowLimit="@dimen/dp_7"> app:hl_shadowLimit="@dimen/dp_7">
<androidx.constraintlayout.widget.ConstraintLayout <androidx.constraintlayout.widget.ConstraintLayout
@ -82,10 +82,10 @@
android:paddingStart="@dimen/dp_4" android:paddingStart="@dimen/dp_4"
android:paddingEnd="@dimen/dp_4" android:paddingEnd="@dimen/dp_4"
android:text="全国" android:text="全国"
android:textColor="#585D6C" android:textColor="@color/color_585d6c"
android:textSize="@dimen/sp_11" android:textSize="@dimen/sp_11"
app:csb_cornerRadius="@dimen/dp_3" app:csb_cornerRadius="@dimen/dp_3"
app:csb_fillColor="#F4F6FA" app:csb_fillColor="@color/color_f4f6fa"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/tv_content" /> app:layout_constraintTop_toBottomOf="@id/tv_content" />

View File

@ -0,0 +1,31 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<TextView
android:id="@+id/tv_phone"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:layout_marginTop="@dimen/dp_16"
android:text="15826433067"
android:textColor="@color/color_666666"
android:textSize="@dimen/sp_14"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/tv_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dp_4"
android:text="郭女士 | 企业负责人"
android:textColor="@color/color_999999"
android:textSize="@dimen/sp_12"
android:layout_marginBottom="@dimen/dp_16"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/tv_phone" />
</androidx.constraintlayout.widget.ConstraintLayout>

View File

@ -81,10 +81,10 @@
android:paddingEnd="@dimen/dp_4" android:paddingEnd="@dimen/dp_4"
android:singleLine="true" android:singleLine="true"
android:text="全国" android:text="全国"
android:textColor="#585D6C" android:textColor="@color/color_585d6c"
android:textSize="@dimen/sp_11" android:textSize="@dimen/sp_11"
app:csb_cornerRadius="@dimen/dp_2" app:csb_cornerRadius="@dimen/dp_2"
app:csb_fillColor="#F4F6FA" app:csb_fillColor="@color/color_f4f6fa"
app:layout_constraintBottom_toBottomOf="@id/tv_price" app:layout_constraintBottom_toBottomOf="@id/tv_price"
app:layout_constraintEnd_toStartOf="@id/iv_cover" app:layout_constraintEnd_toStartOf="@id/iv_cover"
app:layout_constraintTop_toTopOf="@id/tv_price" app:layout_constraintTop_toTopOf="@id/tv_price"
@ -95,7 +95,7 @@
android:layout_width="@dimen/dp_20" android:layout_width="@dimen/dp_20"
android:layout_height="@dimen/dp_20" android:layout_height="@dimen/dp_20"
android:layout_marginTop="@dimen/dp_12" android:layout_marginTop="@dimen/dp_12"
android:background="@mipmap/ic_company_name_avater_bg" android:background="@mipmap/ic_company_name_avatar_bg"
android:gravity="center" android:gravity="center"
android:text="永康\n市欧" android:text="永康\n市欧"
android:textColor="@color/white" android:textColor="@color/white"

View File

@ -0,0 +1,12 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<androidx.appcompat.widget.AppCompatImageView
android:id="@+id/iv_cover"
android:layout_width="match_parent"
android:scaleType="centerCrop"
android:layout_height="match_parent"/>
</androidx.constraintlayout.widget.ConstraintLayout>

View File

@ -9,6 +9,7 @@
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_weight="1" android:layout_weight="1"
android:layout_marginTop="@dimen/dp_16"
android:text="15826433067" android:text="15826433067"
android:textColor="@color/color_666666" android:textColor="@color/color_666666"
android:textSize="@dimen/sp_14" android:textSize="@dimen/sp_14"
@ -23,6 +24,8 @@
android:text="郭女士 | 企业负责人" android:text="郭女士 | 企业负责人"
android:textColor="@color/color_999999" android:textColor="@color/color_999999"
android:textSize="@dimen/sp_12" android:textSize="@dimen/sp_12"
android:layout_marginBottom="@dimen/dp_16"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/tv_phone" /> app:layout_constraintTop_toBottomOf="@id/tv_phone" />
</androidx.constraintlayout.widget.ConstraintLayout> </androidx.constraintlayout.widget.ConstraintLayout>

View File

@ -6,7 +6,7 @@
android:layout_marginTop="@dimen/dp_1" android:layout_marginTop="@dimen/dp_1"
android:layout_marginEnd="@dimen/dp_1" android:layout_marginEnd="@dimen/dp_1"
app:hl_cornerRadius="@dimen/dp_25" app:hl_cornerRadius="@dimen/dp_25"
app:hl_shadowColor="#0f000000" app:hl_shadowColor="#0d4a4f5b"
app:hl_shadowLimit="@dimen/dp_7"> app:hl_shadowLimit="@dimen/dp_7">
<androidx.constraintlayout.widget.ConstraintLayout <androidx.constraintlayout.widget.ConstraintLayout

View File

@ -6,7 +6,7 @@
android:layout_marginStart="@dimen/dp_5" android:layout_marginStart="@dimen/dp_5"
android:layout_marginEnd="@dimen/dp_5" android:layout_marginEnd="@dimen/dp_5"
app:hl_cornerRadius="@dimen/dp_8" app:hl_cornerRadius="@dimen/dp_8"
app:hl_shadowColor="#0f000000" app:hl_shadowColor="#0d4a4f5b"
app:hl_shadowLimit="@dimen/dp_7"> app:hl_shadowLimit="@dimen/dp_7">
<androidx.constraintlayout.widget.ConstraintLayout <androidx.constraintlayout.widget.ConstraintLayout

View File

Before

Width:  |  Height:  |  Size: 732 B

After

Width:  |  Height:  |  Size: 732 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 48 KiB

View File

@ -85,4 +85,8 @@
<color name="color_f8f9fa">#F8F9FA</color> <color name="color_f8f9fa">#F8F9FA</color>
<color name="color_3bbf0f">#3BBF0F</color> <color name="color_3bbf0f">#3BBF0F</color>
<color name="color_707a89">#707A89</color> <color name="color_707a89">#707A89</color>
<color name="color_0ca8ff">#0CA8FF</color>
<color name="color_e6f6ff">#E6F6FF</color>
<color name="color_f4f6fa">#F4F6FA</color>
<color name="color_585d6c">#585D6C</color>
</resources> </resources>