添加发布标讯页面(待完善)
|
|
@ -42,6 +42,8 @@ object EventConstants {
|
|||
|
||||
const val JUMP_TO_SUBSCRIBE = "client.jump.to.subscribe" //跳转到订阅
|
||||
|
||||
const val JUMP_TO_PUBLISH = "client.jump.to.publish" //跳转到发布
|
||||
|
||||
const val JUMP_TO_ABOUT_US = "client.jump.to.about.us" //界面跳转
|
||||
|
||||
const val MAIN_CENTER_ENABLE = "client.main.center.enable" //首页跳转个人中心
|
||||
|
|
|
|||
|
|
@ -0,0 +1,4 @@
|
|||
package com.cheng.bole.event
|
||||
|
||||
class BidEvent {
|
||||
}
|
||||
|
|
@ -0,0 +1,103 @@
|
|||
package com.cheng.bole.ui.dialog
|
||||
|
||||
import android.app.Dialog
|
||||
import android.graphics.Color
|
||||
import android.graphics.drawable.ColorDrawable
|
||||
import android.os.Bundle
|
||||
import android.view.Gravity
|
||||
import android.view.LayoutInflater
|
||||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import android.view.ViewOutlineProvider
|
||||
import android.view.ViewTreeObserver
|
||||
import androidx.constraintlayout.widget.ConstraintLayout
|
||||
import androidx.fragment.app.DialogFragment
|
||||
import com.cheng.bole.R
|
||||
import com.cheng.bole.common.Constants
|
||||
import com.cheng.bole.common.EventConstants
|
||||
import com.cheng.bole.databinding.DialogPublishBidBinding
|
||||
import com.cheng.bole.manager.EventReportManager
|
||||
import com.cheng.bole.ui.activity.PublicActivity
|
||||
import com.cheng.bole.ui.fragment.bid.publish.bid.PublishBidMessageFragment
|
||||
import com.efs.sdk.memleaksdk.monitor.internal.bi
|
||||
import com.example.base.extensions.onClick
|
||||
import com.example.base.utils.ScreenUtils
|
||||
|
||||
class PublishBidDialog : DialogFragment() {
|
||||
private lateinit var binding: DialogPublishBidBinding
|
||||
|
||||
override fun onStart() {
|
||||
super.onStart()
|
||||
val window = dialog?.window
|
||||
val windowParams = window?.attributes
|
||||
windowParams?.dimAmount = 0.7f
|
||||
windowParams?.width = ScreenUtils.getWindowSize().x
|
||||
windowParams?.gravity = Gravity.BOTTOM
|
||||
windowParams?.windowAnimations = R.style.dialog_bottom
|
||||
dialog?.window?.attributes = windowParams
|
||||
}
|
||||
|
||||
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
|
||||
dialog?.window?.setBackgroundDrawable(ColorDrawable(Color.TRANSPARENT))
|
||||
return super.onCreateView(inflater, container, savedInstanceState)
|
||||
}
|
||||
|
||||
override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {
|
||||
val view = layoutInflater.inflate(R.layout.dialog_publish_bid, null)
|
||||
|
||||
binding = DialogPublishBidBinding.bind(view)
|
||||
|
||||
binding.tvTitle.typeface = Constants.pmzdbt
|
||||
binding.tvBidTitle.typeface = Constants.almmsht
|
||||
binding.tvGoodsTitle.typeface = Constants.almmsht
|
||||
|
||||
binding.layoutBid.setupWith(binding.root)
|
||||
.setFrameClearDrawable(binding.layoutBid.background)
|
||||
.setBlurRadius(5f)
|
||||
binding.layoutBid.clipToOutline = true
|
||||
binding.layoutBid.outlineProvider = ViewOutlineProvider.BACKGROUND
|
||||
|
||||
binding.layoutGoods.setupWith(binding.root)
|
||||
.setFrameClearDrawable(binding.layoutBid.background)
|
||||
.setBlurRadius(5f)
|
||||
binding.layoutGoods.clipToOutline = true
|
||||
binding.layoutGoods.outlineProvider = ViewOutlineProvider.BACKGROUND
|
||||
|
||||
binding.layoutBid.onClick {
|
||||
PublicActivity.start(requireActivity(), PublishBidMessageFragment::class.java)
|
||||
EventReportManager.eventReport(EventConstants.JUMP_TO_PUBLISH, "home", "标讯")
|
||||
dismiss()
|
||||
}
|
||||
|
||||
binding.layoutGoods.onClick {
|
||||
// PublicActivity.start(requireActivity(), PublishSupplyMessageFragment::class.java, Pair("from", 1))
|
||||
EventReportManager.eventReport(EventConstants.JUMP_TO_PUBLISH, "home", "商品")
|
||||
dismiss()
|
||||
}
|
||||
|
||||
binding.ivClose.onClick { dismiss() }
|
||||
|
||||
binding.ivTopBg.viewTreeObserver.addOnGlobalLayoutListener(object : ViewTreeObserver.OnGlobalLayoutListener {
|
||||
override fun onGlobalLayout() {
|
||||
val lp = binding.tvTitle.layoutParams as ConstraintLayout.LayoutParams
|
||||
lp.topMargin = (binding.ivTopBg.height * 55f / 291f).toInt()
|
||||
binding.tvTitle.layoutParams = lp
|
||||
// (binding.tvTitle.layoutParams as ConstraintLayout.LayoutParams).topMargin = (binding.ivTopBg.height * 85f / 291f).toInt()
|
||||
binding.ivTopBg.viewTreeObserver.removeOnGlobalLayoutListener(this)
|
||||
}
|
||||
})
|
||||
|
||||
val dialog = Dialog(requireContext())
|
||||
dialog.setContentView(view)
|
||||
return dialog
|
||||
}
|
||||
|
||||
companion object {
|
||||
fun newInstance(): PublishBidDialog {
|
||||
val arg = Bundle()
|
||||
val fragment = PublishBidDialog()
|
||||
fragment.arguments = arg
|
||||
return fragment
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,119 @@
|
|||
package com.cheng.bole.ui.dialog
|
||||
|
||||
import android.annotation.SuppressLint
|
||||
import android.app.Dialog
|
||||
import android.graphics.Color
|
||||
import android.graphics.Typeface
|
||||
import android.graphics.drawable.ColorDrawable
|
||||
import android.os.Build
|
||||
import android.os.Bundle
|
||||
import android.view.Gravity
|
||||
import android.view.LayoutInflater
|
||||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import android.widget.TextView
|
||||
import androidx.fragment.app.DialogFragment
|
||||
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.BidTypeBean
|
||||
import com.cheng.bole.databinding.DialogSelectBidTypeBinding
|
||||
import com.cheng.bole.manager.UserConfigManager
|
||||
import com.example.base.extensions.getColor
|
||||
import com.example.base.extensions.onClick
|
||||
import com.example.base.extensions.toast
|
||||
import com.example.base.utils.ScreenUtils
|
||||
|
||||
class SelectBidTypeDialog : DialogFragment() {
|
||||
private val mAdapter by lazy { BidTypeAdapter() }
|
||||
|
||||
private var bidType: BidTypeBean? = null
|
||||
|
||||
private var mOnBackListener: ((BidTypeBean) -> Unit)? = null //回调事件
|
||||
|
||||
private lateinit var binding: DialogSelectBidTypeBinding
|
||||
|
||||
override fun onStart() {
|
||||
super.onStart()
|
||||
val window = dialog?.window
|
||||
val windowParams = window?.attributes
|
||||
windowParams?.dimAmount = 0.7f
|
||||
windowParams?.width = ScreenUtils.getWindowSize().x
|
||||
windowParams?.gravity = Gravity.BOTTOM
|
||||
windowParams?.windowAnimations = R.style.dialog_bottom
|
||||
dialog?.window?.attributes = windowParams
|
||||
}
|
||||
|
||||
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
|
||||
dialog?.window?.setBackgroundDrawable(ColorDrawable(Color.TRANSPARENT))
|
||||
return super.onCreateView(inflater, container, savedInstanceState)
|
||||
}
|
||||
|
||||
@SuppressLint("NotifyDataSetChanged")
|
||||
override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {
|
||||
val view = layoutInflater.inflate(R.layout.dialog_select_bid_type, null)
|
||||
|
||||
binding = DialogSelectBidTypeBinding.bind(view)
|
||||
|
||||
bidType = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
|
||||
arguments?.getSerializable("type", BidTypeBean::class.java)
|
||||
} else {
|
||||
arguments?.getSerializable("type") as? BidTypeBean
|
||||
}
|
||||
|
||||
binding.mRecyclerView.adapter = mAdapter
|
||||
val typeList = UserConfigManager.getBidTypes()
|
||||
if (bidType != null) {
|
||||
typeList.find { it.id == bidType!!.id }?.isChecked = true
|
||||
}
|
||||
mAdapter.setList(typeList)
|
||||
|
||||
mAdapter.setOnItemClickListener { _, _, i ->
|
||||
val item = mAdapter.getItem(i)
|
||||
mAdapter.data.find { it.isChecked }?.isChecked = false
|
||||
item.isChecked = true
|
||||
bidType = item
|
||||
mAdapter.notifyDataSetChanged()
|
||||
}
|
||||
|
||||
binding.btnNext.onClick {
|
||||
if (bidType == null) {
|
||||
toast("请选择类别")
|
||||
return@onClick
|
||||
}
|
||||
mOnBackListener?.invoke(bidType!!)
|
||||
dismiss()
|
||||
}
|
||||
|
||||
binding.ivClose.onClick { dismiss() }
|
||||
|
||||
val dialog = Dialog(requireContext())
|
||||
dialog.setContentView(view)
|
||||
return dialog
|
||||
}
|
||||
|
||||
fun setOnSelectListener(listener: ((BidTypeBean) -> Unit)) {
|
||||
mOnBackListener = listener
|
||||
}
|
||||
|
||||
companion object {
|
||||
fun newInstance(type: BidTypeBean?): SelectBidTypeDialog {
|
||||
val arg = Bundle()
|
||||
arg.putSerializable("type", type)
|
||||
val fragment = SelectBidTypeDialog()
|
||||
fragment.arguments = arg
|
||||
return fragment
|
||||
}
|
||||
}
|
||||
|
||||
class BidTypeAdapter : BaseQuickAdapter<BidTypeBean, BaseViewHolder>(R.layout.listitem_bid_type) {
|
||||
override fun convert(holder: BaseViewHolder, item: BidTypeBean) {
|
||||
holder.setText(R.id.tv_name, item.name)
|
||||
holder.setTextColor(R.id.tv_name, if (item.isChecked) getColor(R.color.color_ff493c) else getColor(R.color.color_666666))
|
||||
holder.getView<TextView>(R.id.tv_name).typeface = if (item.isChecked) Typeface.DEFAULT_BOLD else Typeface.DEFAULT
|
||||
|
||||
holder.itemView.setBackgroundResource(if (item.isChecked) R.drawable.shape_f1f6f_cor4 else 0)
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,18 @@
|
|||
package com.cheng.bole.ui.fragment.bid.publish.bid
|
||||
|
||||
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 AddBidContactsAdapter: BaseQuickAdapter<ContactsInfoBean, BaseViewHolder>(R.layout.listitem_publish_bid_contacts) {
|
||||
|
||||
init {
|
||||
addChildClickViewIds(R.id.iv_edit)
|
||||
}
|
||||
|
||||
override fun convert(holder: BaseViewHolder, item: ContactsInfoBean) {
|
||||
holder.setText(R.id.tv_name, item.name)
|
||||
holder.setText(R.id.tv_phone, item.phone)
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,18 @@
|
|||
package com.cheng.bole.ui.fragment.bid.publish.bid
|
||||
|
||||
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.AttachmentBean
|
||||
|
||||
class AddBidFileAdapter : BaseQuickAdapter<AttachmentBean, BaseViewHolder>(R.layout.listitem_publish_bid_file) {
|
||||
|
||||
init {
|
||||
addChildClickViewIds(R.id.iv_delete)
|
||||
}
|
||||
|
||||
override fun convert(holder: BaseViewHolder, item: AttachmentBean) {
|
||||
holder.setText(R.id.tv_name, item.title)
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,118 @@
|
|||
package com.cheng.bole.ui.fragment.bid.publish.bid
|
||||
|
||||
import android.annotation.SuppressLint
|
||||
import android.content.Context
|
||||
import android.view.LayoutInflater
|
||||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import android.widget.ImageView
|
||||
import androidx.recyclerview.widget.RecyclerView
|
||||
import coil.load
|
||||
import coil.transform.RoundedCornersTransformation
|
||||
import com.cheng.bole.R
|
||||
import com.cheng.bole.bean.UploadFileEntity
|
||||
import com.example.base.utils.DensityUtils
|
||||
import org.jetbrains.anko.find
|
||||
import org.jetbrains.anko.sdk27.listeners.onClick
|
||||
|
||||
class AddBidImageAdapter(private val context: Context, val data: MutableList<UploadFileEntity>) : RecyclerView.Adapter<AddBidImageAdapter.ViewHolder>() {
|
||||
|
||||
var selectMax = 10
|
||||
private val TYPE_ADD_IMAGE = 1001
|
||||
private val TYPE_PICTURE = 1002
|
||||
|
||||
companion object {
|
||||
val TYPE_ADD = 10001
|
||||
val TYPE_RELOAD = 10002
|
||||
val TYPE_DELETE = 10003
|
||||
}
|
||||
|
||||
class ViewHolder(view: View) : RecyclerView.ViewHolder(view) {
|
||||
val ivImg = view.find<ImageView>(R.id.iv_image)
|
||||
val ivAddImg = view.find<ImageView>(R.id.iv_add_image)
|
||||
val ivDeleteImg = view.find<ImageView>(R.id.iv_delete)
|
||||
}
|
||||
|
||||
override fun getItemCount(): Int {
|
||||
return if (data.size < selectMax) {
|
||||
data.size + 1
|
||||
} else {
|
||||
data.size
|
||||
}
|
||||
}
|
||||
|
||||
override fun getItemViewType(position: Int): Int {
|
||||
return if (isAddItem(position)) {
|
||||
TYPE_ADD_IMAGE
|
||||
} else {
|
||||
TYPE_PICTURE
|
||||
}
|
||||
}
|
||||
|
||||
@SuppressLint("NotifyDataSetChanged")
|
||||
fun removeAll() {
|
||||
data.clear()
|
||||
notifyDataSetChanged()
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除
|
||||
*/
|
||||
fun remove(position: Int) {
|
||||
try {
|
||||
if (position != RecyclerView.NO_POSITION && data.size > position) {
|
||||
data.removeAt(position)
|
||||
notifyItemRemoved(position)
|
||||
notifyItemRangeChanged(position, data.size)
|
||||
}
|
||||
} catch (e: Exception) {
|
||||
e.printStackTrace()
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 创建ViewHolder
|
||||
*/
|
||||
override fun onCreateViewHolder(viewGroup: ViewGroup, i: Int): ViewHolder {
|
||||
val view = LayoutInflater.from(context).inflate(R.layout.listitem_add_bid_img, viewGroup, false)
|
||||
return ViewHolder(view)
|
||||
}
|
||||
|
||||
private fun isAddItem(position: Int): Boolean {
|
||||
return position == data.size
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置值
|
||||
*/
|
||||
override fun onBindViewHolder(viewHolder: ViewHolder, position: Int) {
|
||||
if (viewHolder.itemViewType == TYPE_ADD_IMAGE) {
|
||||
viewHolder.ivDeleteImg.visibility = View.GONE
|
||||
viewHolder.ivAddImg.visibility = View.VISIBLE
|
||||
} else {
|
||||
viewHolder.ivAddImg.visibility = View.GONE
|
||||
viewHolder.ivDeleteImg.visibility = View.VISIBLE
|
||||
viewHolder.ivImg.load(data[position].url) {
|
||||
transformations(RoundedCornersTransformation(DensityUtils.dp2px(8f).toFloat()))
|
||||
}
|
||||
}
|
||||
viewHolder.ivAddImg.onClick {
|
||||
onItemClick?.invoke(TYPE_ADD, position)
|
||||
}
|
||||
|
||||
viewHolder.ivDeleteImg.onClick {
|
||||
onItemClick?.invoke(TYPE_DELETE, position)
|
||||
}
|
||||
viewHolder.ivImg.onClick {
|
||||
if (viewHolder.itemViewType == TYPE_PICTURE) {
|
||||
onItemClick?.invoke(TYPE_RELOAD, position)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private var onItemClick: ((Int, Int) -> Unit)? = null
|
||||
|
||||
fun setOnItemClick(onClick: ((Int, Int) -> Unit)?) {
|
||||
onItemClick = onClick
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,417 @@
|
|||
package com.cheng.bole.ui.fragment.bid.publish.bid
|
||||
|
||||
import android.annotation.SuppressLint
|
||||
import android.os.Build
|
||||
import android.text.TextUtils
|
||||
import androidx.activity.result.contract.ActivityResultContracts
|
||||
import com.cheng.bole.R
|
||||
import com.cheng.bole.bean.AreaBean
|
||||
import com.cheng.bole.bean.AttachmentBean
|
||||
import com.cheng.bole.bean.BidDetailBean
|
||||
import com.cheng.bole.bean.BidTypeBean
|
||||
import com.cheng.bole.bean.UploadFileEntity
|
||||
import com.cheng.bole.common.Constants
|
||||
import com.cheng.bole.databinding.FragmentPublishBidMessageBinding
|
||||
import com.cheng.bole.impl.TextWatcherImpl
|
||||
import com.cheng.bole.manager.UserConfigManager
|
||||
import com.cheng.bole.ui.dialog.SelectAreaDialog
|
||||
import com.cheng.bole.ui.dialog.SelectBidTypeDialog
|
||||
import com.cheng.bole.utils.FileProviderUtils
|
||||
import com.cheng.bole.utils.GlideEngine
|
||||
import com.cheng.bole.utils.PermissionUtils
|
||||
import com.example.base.extensions.getColor
|
||||
import com.example.base.extensions.gone
|
||||
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.SpanUtils
|
||||
import com.google.gson.Gson
|
||||
import com.google.gson.JsonArray
|
||||
import com.google.gson.JsonObject
|
||||
import com.google.gson.reflect.TypeToken
|
||||
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 java.io.File
|
||||
|
||||
class PublishBidMessageFragment : BaseFragment<FragmentPublishBidMessageBinding, PublishBidMessageViewModel>() {
|
||||
private var bidDetail: BidDetailBean? = null
|
||||
|
||||
private val imageAdapter by lazy { AddBidImageAdapter(requireContext(), uploadedImgList) }
|
||||
private var uploadedImgList: ArrayList<UploadFileEntity> = ArrayList()
|
||||
|
||||
private val fileAdapter by lazy { AddBidFileAdapter() }
|
||||
private val selectedFileList = ArrayList<File>()
|
||||
|
||||
private val deletedList = mutableListOf<String>()
|
||||
|
||||
private val contactsAdapter by lazy { AddBidContactsAdapter() }
|
||||
|
||||
private var contentType: Int = 1 //1 文字 2 图片
|
||||
|
||||
private var city: AreaBean? = null
|
||||
private var bidType: BidTypeBean? = null
|
||||
|
||||
private val textWatcher = object : TextWatcherImpl() {
|
||||
override fun onTextChanged(s: CharSequence?, start: Int, before: Int, count: Int) {
|
||||
super.onTextChanged(s, start, before, count)
|
||||
SpanUtils.with(binding.tvTextCount)
|
||||
.append("${s?.length ?: 0}")
|
||||
.setForegroundColor(getColor(R.color.color_1a1a1a))
|
||||
.append("/20000")
|
||||
.create()
|
||||
}
|
||||
}
|
||||
|
||||
override fun initView() {
|
||||
super.initView()
|
||||
|
||||
binding.rvImages.adapter = imageAdapter
|
||||
binding.rvFiles.adapter = fileAdapter
|
||||
binding.rvContacts.adapter = contactsAdapter
|
||||
}
|
||||
|
||||
override fun initData() {
|
||||
super.initData()
|
||||
bidDetail = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
|
||||
arguments?.getSerializable("item", BidDetailBean::class.java)
|
||||
} else {
|
||||
arguments?.getSerializable("item") as? BidDetailBean
|
||||
}
|
||||
if (bidDetail != null) {
|
||||
setData(bidDetail!!)
|
||||
}
|
||||
}
|
||||
|
||||
@SuppressLint("NotifyDataSetChanged")
|
||||
override fun initListener() {
|
||||
super.initListener()
|
||||
binding.etProjectInfo.addTextChangedListener(textWatcher)
|
||||
|
||||
binding.tvProjectType.onClick {
|
||||
val f = SelectBidTypeDialog.newInstance(bidType)
|
||||
f.setOnSelectListener {
|
||||
bidType = it
|
||||
binding.tvProjectType.text = it.name
|
||||
}
|
||||
f.show(childFragmentManager, SelectBidTypeDialog::class.java.simpleName)
|
||||
}
|
||||
|
||||
binding.tvProjectArea.onClick {
|
||||
val f = SelectAreaDialog.newInstance(if (city != null) listOf(city!!) else emptyList(), true)
|
||||
f.setOnSelectListener {
|
||||
city = it[0]
|
||||
binding.tvProjectArea.text = city!!.name
|
||||
}
|
||||
f.show(childFragmentManager, SelectAreaDialog::class.java.simpleName)
|
||||
}
|
||||
|
||||
binding.tvUploadFile.onClick {
|
||||
fileLauncher.launch("application/pdf")
|
||||
}
|
||||
|
||||
binding.tvAddContacts.onClick {
|
||||
/*val f = AddContactsDialog.newInstance(null)
|
||||
f.setOnSelectListener {
|
||||
contactsAdapter.addData(it)
|
||||
if (contactsAdapter.data.size == 5) {
|
||||
binding.tvAddContacts.gone()
|
||||
}
|
||||
}
|
||||
f.show(childFragmentManager, AddContactsDialog::class.java.simpleName)*/
|
||||
}
|
||||
|
||||
binding.rgProjectInfoType.setOnCheckedChangeListener { _, checkedId ->
|
||||
when (checkedId) {
|
||||
R.id.rb1 -> {
|
||||
contentType = 1
|
||||
binding.etProjectInfo.visible()
|
||||
binding.tvTextCount.visible()
|
||||
binding.tvImageCount.gone()
|
||||
binding.tvImageLimitTip.gone()
|
||||
binding.rvImages.gone()
|
||||
}
|
||||
|
||||
R.id.rb2 -> {
|
||||
contentType = 2
|
||||
binding.etProjectInfo.gone()
|
||||
binding.tvTextCount.gone()
|
||||
binding.tvImageCount.visible()
|
||||
binding.tvImageLimitTip.visible()
|
||||
binding.rvImages.visible()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
imageAdapter.setOnItemClick { type, position ->
|
||||
when (type) {
|
||||
AddBidImageAdapter.TYPE_ADD -> {
|
||||
PermissionUtils.checkPhotoPermission(requireActivity(), childFragmentManager, true) { isGranted ->
|
||||
if (isGranted) selectPhoto()
|
||||
}
|
||||
}
|
||||
|
||||
AddBidImageAdapter.TYPE_DELETE -> {
|
||||
if (uploadedImgList.isNotEmpty()) {
|
||||
if (bidDetail == null) {
|
||||
mViewModel.deleteFile(uploadedImgList[position].id)
|
||||
}
|
||||
deletedList.add(uploadedImgList[position].id)
|
||||
uploadedImgList.removeAt(position)
|
||||
imageAdapter.notifyDataSetChanged()
|
||||
SpanUtils.with(binding.tvImageCount)
|
||||
.append("(")
|
||||
.append("${uploadedImgList.size}")
|
||||
.setForegroundColor(getColor(R.color.color_ff493c))
|
||||
.append("/10)")
|
||||
.create()
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fileAdapter.setOnItemChildClickListener { _, _, i ->
|
||||
if (bidDetail == null) {
|
||||
mViewModel.deleteFile(fileAdapter.getItem(i).id)
|
||||
}
|
||||
deletedList.add(fileAdapter.getItem(i).id )
|
||||
fileAdapter.removeAt(i)
|
||||
SpanUtils.with(binding.tvFileCount)
|
||||
.append("(")
|
||||
.append("${fileAdapter.data.size}")
|
||||
.setForegroundColor(getColor(R.color.color_ff493c))
|
||||
.append("/5)")
|
||||
.create()
|
||||
}
|
||||
|
||||
contactsAdapter.setOnItemChildClickListener { _, _, i ->
|
||||
/*val f = AddContactsDialog.newInstance(contactsAdapter.getItem(i))
|
||||
f.setOnSelectListener {
|
||||
contactsAdapter.removeAt(i)
|
||||
contactsAdapter.addData(i, it)
|
||||
}
|
||||
f.show(childFragmentManager, AddContactsDialog::class.java.simpleName)*/
|
||||
}
|
||||
|
||||
binding.btnNext.onClick {
|
||||
val name = binding.etProjectName.text.toString().trim()
|
||||
val price = binding.etProjectPrice.text.toString().trim()
|
||||
val contentText = binding.etProjectInfo.text.toString().trim()
|
||||
if (bidType == null) {
|
||||
toast("请选择项目类型")
|
||||
return@onClick
|
||||
}
|
||||
if (TextUtils.isEmpty(name)) {
|
||||
toast("请输入项目名称")
|
||||
return@onClick
|
||||
}
|
||||
if (TextUtils.isEmpty(price)) {
|
||||
toast("请输入项目价格")
|
||||
return@onClick
|
||||
}
|
||||
if (city == null) {
|
||||
toast("请选择发布地区")
|
||||
return@onClick
|
||||
}
|
||||
if (contentType == 1 && TextUtils.isEmpty(contentText)) {
|
||||
toast("请输入项目文本信息")
|
||||
return@onClick
|
||||
}
|
||||
if (contentType == 2 && imageAdapter.data.isEmpty()) {
|
||||
toast("请上传项目图片信息")
|
||||
return@onClick
|
||||
}
|
||||
if (fileAdapter.data.isEmpty()) {
|
||||
toast("请上传项目文件")
|
||||
return@onClick
|
||||
}
|
||||
if (contactsAdapter.data.isEmpty()) {
|
||||
toast("请添加联系人")
|
||||
return@onClick
|
||||
}
|
||||
commit()
|
||||
}
|
||||
}
|
||||
|
||||
@SuppressLint("NotifyDataSetChanged")
|
||||
override fun initObserve() {
|
||||
super.initObserve()
|
||||
mViewModel.addLiveData.observe(this) {
|
||||
/*toast("提交成功")
|
||||
RxBus.defaultInstance.post(BidEvent())
|
||||
PublicActivity.start(requireContext(), MyBiddingDocFragment::class.java)
|
||||
requireActivity().finish()*/
|
||||
}
|
||||
|
||||
mViewModel.imageLiveData.observe(this) {
|
||||
uploadedImgList.addAll(it)
|
||||
imageAdapter.notifyDataSetChanged()
|
||||
SpanUtils.with(binding.tvImageCount)
|
||||
.append("(")
|
||||
.append("${uploadedImgList.size}")
|
||||
.setForegroundColor(getColor(R.color.color_ff493c))
|
||||
.append("/10)")
|
||||
.create()
|
||||
}
|
||||
|
||||
mViewModel.fileLiveData.observe(this) { list ->
|
||||
list.forEachIndexed { index, file ->
|
||||
fileAdapter.addData(AttachmentBean(file.id, file.url, "pdf", selectedFileList[index].name))
|
||||
}
|
||||
SpanUtils.with(binding.tvFileCount)
|
||||
.append("(")
|
||||
.append("${fileAdapter.data.size}")
|
||||
.setForegroundColor(getColor(R.color.color_ff493c))
|
||||
.append("/5)")
|
||||
.create()
|
||||
if (fileAdapter.data.size == 5) {
|
||||
binding.tvUploadFile.gone()
|
||||
} else {
|
||||
binding.tvUploadFile.visible()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private fun commit() {
|
||||
val name = binding.etProjectName.text.toString().trim()
|
||||
val price = binding.etProjectPrice.text.toString().trim()
|
||||
val contentText = binding.etProjectInfo.text.toString().trim()
|
||||
|
||||
val jsonObject = JsonObject()
|
||||
jsonObject.addProperty("origin_title", name)
|
||||
jsonObject.addProperty("city_id", "${city!!.id}")
|
||||
jsonObject.addProperty("type_id", bidType!!.id)
|
||||
jsonObject.addProperty("project_amount", price)
|
||||
jsonObject.addProperty("content_type", if (contentType == 1) "1" else "2")
|
||||
|
||||
if (contentType == 1) {
|
||||
jsonObject.addProperty("origin_content", contentText)
|
||||
} else {
|
||||
val imageArray = JsonArray()
|
||||
uploadedImgList.forEach {
|
||||
imageArray.add(it.id)
|
||||
}
|
||||
jsonObject.add("origin_content", imageArray)
|
||||
}
|
||||
|
||||
val attachArray = JsonArray()
|
||||
fileAdapter.data.forEach {
|
||||
val attachObj = JsonObject()
|
||||
attachObj.addProperty("title", it.title)
|
||||
attachObj.addProperty("type", "pdf")
|
||||
attachObj.addProperty("url", it.url)
|
||||
attachArray.add(attachObj)
|
||||
}
|
||||
jsonObject.add("origin_attachment", attachArray)
|
||||
|
||||
val contactArray = JsonArray()
|
||||
contactsAdapter.data.forEach {
|
||||
val contactObj = JsonObject()
|
||||
contactObj.addProperty("name", it.name)
|
||||
contactObj.addProperty("phone", it.phone)
|
||||
contactObj.addProperty("job", it.job)
|
||||
contactArray.add(contactObj)
|
||||
}
|
||||
jsonObject.add("contact", contactArray)
|
||||
|
||||
if (bidDetail == null) {
|
||||
mViewModel.addBid(jsonObject.toString().toRequestBody())
|
||||
} else {
|
||||
jsonObject.addProperty("id", bidDetail!!.id)
|
||||
mViewModel.updateBid(jsonObject.toString().toRequestBody())
|
||||
}
|
||||
}
|
||||
|
||||
@SuppressLint("SetTextI18n", "NotifyDataSetChanged")
|
||||
private fun setData(detail: BidDetailBean) {
|
||||
if (detail.status == "3") {
|
||||
binding.tvReason.text = "理由:${detail.review_remark}"
|
||||
binding.tvTime.text = detail.review_time
|
||||
binding.layoutRejectReason.visible()
|
||||
}
|
||||
binding.etProjectName.setText(detail.origin_title)
|
||||
binding.etProjectPrice.setText(detail.project_amount)
|
||||
|
||||
city = UserConfigManager.getCityList().find { it.id == detail.city_id.toInt() }
|
||||
if (city != null) binding.tvProjectArea.text = city!!.name
|
||||
|
||||
bidType = UserConfigManager.getBidTypes().find { it.id == detail.type_id }
|
||||
if (bidType != null) binding.tvProjectType.text = bidType!!.name
|
||||
|
||||
if (detail.content_type == "1") {
|
||||
binding.etProjectInfo.setText(detail.origin_content.toString())
|
||||
binding.rb1.isChecked = true
|
||||
} else {
|
||||
val imageList = Gson().fromJson<List<UploadFileEntity>>(Gson().toJson(detail.origin_content), object : TypeToken<List<UploadFileEntity>>(){}.type)
|
||||
uploadedImgList.addAll(imageList)
|
||||
imageAdapter.notifyDataSetChanged()
|
||||
SpanUtils.with(binding.tvImageCount)
|
||||
.append("(")
|
||||
.append("${uploadedImgList.size}")
|
||||
.setForegroundColor(getColor(R.color.color_ff493c))
|
||||
.append("/10)")
|
||||
.create()
|
||||
binding.rb2.isChecked = true
|
||||
}
|
||||
|
||||
fileAdapter.setList(detail.origin_attachment)
|
||||
if (fileAdapter.data.size == 5) {
|
||||
binding.tvUploadFile.gone()
|
||||
}
|
||||
|
||||
contactsAdapter.setList(detail.contact)
|
||||
if (contactsAdapter.data.size == 5) {
|
||||
binding.tvAddContacts.gone()
|
||||
}
|
||||
}
|
||||
|
||||
private val fileLauncher = registerForActivityResult(ActivityResultContracts.GetMultipleContents()) {
|
||||
if (it.isEmpty()) return@registerForActivityResult
|
||||
if (fileAdapter.data.size + it.size > 5) {
|
||||
toast("最多上传5个文件")
|
||||
return@registerForActivityResult
|
||||
}
|
||||
val files = arrayListOf<File>()
|
||||
it.forEach { uri ->
|
||||
val path = FileProviderUtils.getFileAbsolutePath(requireContext(), uri)
|
||||
if (!TextUtils.isEmpty(path)) {
|
||||
files.add(File(path!!))
|
||||
}
|
||||
}
|
||||
if (files.find { file -> file.length() > 5 * 1024 * 1024 } != null) {
|
||||
toast("单个文件大小不能超过5M")
|
||||
return@registerForActivityResult
|
||||
}
|
||||
selectedFileList.clear()
|
||||
selectedFileList.addAll(files)
|
||||
mViewModel.fileList.clear()
|
||||
mViewModel.uploadFiles(files)
|
||||
}
|
||||
|
||||
private fun selectPhoto() {
|
||||
EasyPhotos.createAlbum(this, true, false, GlideEngine.getInstance())
|
||||
.setFileProviderAuthority(Constants.AppFilter)
|
||||
.setCount(imageAdapter.selectMax - uploadedImgList.size)
|
||||
.start(object : SelectCallback() {
|
||||
@SuppressLint("NotifyDataSetChanged")
|
||||
override fun onResult(photos: ArrayList<Photo>, isOriginal: Boolean) {
|
||||
if (photos.find { it.size > 10 * 1024 * 1024 } != null) {
|
||||
toast("单张图片大小不能超过10M")
|
||||
return
|
||||
}
|
||||
mViewModel.imgList.clear()
|
||||
mViewModel.uploadImages(requireContext(), photos)
|
||||
}
|
||||
|
||||
override fun onCancel() {
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
override fun onDestroyView() {
|
||||
binding.etProjectInfo.removeTextChangedListener(textWatcher)
|
||||
super.onDestroyView()
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,136 @@
|
|||
package com.cheng.bole.ui.fragment.bid.publish.bid
|
||||
|
||||
import android.content.Context
|
||||
import androidx.lifecycle.MutableLiveData
|
||||
import com.cheng.bole.bean.UploadFileEntity
|
||||
import com.cheng.bole.net.ApiFactory
|
||||
import com.cheng.bole.utils.BitmapUtils
|
||||
import com.example.base.extensions.toast
|
||||
import com.example.base.utils.L
|
||||
import com.example.base.viewmodel.BaseViewModel
|
||||
import com.huantansheng.easyphotos.models.album.entity.Photo
|
||||
import okhttp3.MediaType.Companion.toMediaTypeOrNull
|
||||
import okhttp3.MultipartBody
|
||||
import okhttp3.RequestBody
|
||||
import java.io.File
|
||||
|
||||
class PublishBidMessageViewModel : BaseViewModel() {
|
||||
val addLiveData = MutableLiveData<Any>()
|
||||
|
||||
val imageLiveData = MutableLiveData<List<UploadFileEntity>>()
|
||||
val imgList = ArrayList<UploadFileEntity>()
|
||||
|
||||
val fileLiveData = MutableLiveData<List<UploadFileEntity>>()
|
||||
val fileList = ArrayList<UploadFileEntity>()
|
||||
|
||||
fun addBid(requestBody: RequestBody) {
|
||||
showDialog()
|
||||
launchOnUiTryCatch({
|
||||
val response = ApiFactory.apiService.addBidInfo(requestBody)
|
||||
if (response.status) {
|
||||
addLiveData.postValue(Any())
|
||||
} else toast(response.message, true)
|
||||
dismissDialog()
|
||||
}, {
|
||||
dismissDialog()
|
||||
setError(it)
|
||||
L.d(it)
|
||||
})
|
||||
}
|
||||
|
||||
fun updateBid(requestBody: RequestBody) {
|
||||
showDialog()
|
||||
launchOnUiTryCatch({
|
||||
val response = ApiFactory.apiService.updateBidInfo(requestBody)
|
||||
if (response.status) {
|
||||
addLiveData.postValue(Any())
|
||||
} else toast(response.message, true)
|
||||
dismissDialog()
|
||||
}, {
|
||||
dismissDialog()
|
||||
setError(it)
|
||||
L.d(it)
|
||||
})
|
||||
}
|
||||
|
||||
//删除文件
|
||||
fun deleteFile(id: String) {
|
||||
launchOnUiTryCatch({
|
||||
ApiFactory.apiService.delUserFile(id)
|
||||
}, {
|
||||
L.d(it)
|
||||
})
|
||||
}
|
||||
|
||||
fun uploadImages(context: Context, list: ArrayList<Photo>) {
|
||||
showDialog()
|
||||
list.forEachIndexed { index, photo ->
|
||||
if (index == 0) {
|
||||
uploadImg(context, photo) {
|
||||
list.remove(photo)
|
||||
if (list.isNotEmpty()) {
|
||||
uploadImages(context, list)
|
||||
} else {
|
||||
imageLiveData.postValue(imgList)
|
||||
dismissDialog()
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fun uploadFiles(list: ArrayList<File>) {
|
||||
showDialog()
|
||||
list.forEachIndexed { index, file ->
|
||||
if (index == 0) {
|
||||
uploadFile(file) {
|
||||
list.remove(file)
|
||||
if (list.size > 0) {
|
||||
uploadFiles(list)
|
||||
} else {
|
||||
fileLiveData.postValue(fileList)
|
||||
dismissDialog()
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private fun uploadImg(context: Context, photo: Photo, clickFun: () -> Unit) {
|
||||
BitmapUtils.compressImg(context, photo.path) {
|
||||
launchOnUiTryCatch({
|
||||
val requestFile = RequestBody.create("multipart/form-data".toMediaTypeOrNull(), it)
|
||||
val filePart = MultipartBody.Part.createFormData("file", it.getName(), requestFile)
|
||||
val response = ApiFactory.apiService.upload(filePart, "supply")
|
||||
if (response.status) {
|
||||
imgList.add(response.data)
|
||||
clickFun.invoke()
|
||||
} else {
|
||||
toast(response.message, true)
|
||||
dismissDialog()
|
||||
}
|
||||
}, {
|
||||
dismissDialog()
|
||||
L.d(it)
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
private fun uploadFile(file: File, clickFun: () -> Unit) {
|
||||
launchOnUiTryCatch({
|
||||
val requestFile = RequestBody.create("multipart/form-data".toMediaTypeOrNull(), file)
|
||||
val filePart = MultipartBody.Part.createFormData("file", file.getName(), requestFile)
|
||||
val response = ApiFactory.apiService.upload(filePart, "supply")
|
||||
if (response.status) {
|
||||
fileList.add(response.data)
|
||||
clickFun.invoke()
|
||||
} else {
|
||||
toast(response.message, true)
|
||||
dismissDialog()
|
||||
}
|
||||
}, {
|
||||
dismissDialog()
|
||||
L.d(it)
|
||||
})
|
||||
}
|
||||
}
|
||||
|
|
@ -16,6 +16,7 @@ import com.cheng.bole.manager.UserConfigManager
|
|||
import com.cheng.bole.ui.activity.LoginActivity
|
||||
import com.cheng.bole.ui.activity.PublicActivity
|
||||
import com.cheng.bole.ui.base.BasePageAdapter
|
||||
import com.cheng.bole.ui.dialog.PublishBidDialog
|
||||
import com.cheng.bole.ui.dialog.VipLoginTipDialog
|
||||
import com.cheng.bole.ui.fragment.home.HomeFragment
|
||||
import com.cheng.bole.ui.fragment.merchant.MerchantFragment
|
||||
|
|
@ -24,6 +25,7 @@ import com.cheng.bole.ui.fragment.mine.coupon.CouponFragment
|
|||
import com.cheng.bole.ui.fragment.mine.vip.VipFragment
|
||||
import com.cheng.bole.ui.fragment.push.PushFragment
|
||||
import com.example.base.common.RxBus
|
||||
import com.example.base.extensions.onClick
|
||||
import com.example.base.extensions.toast
|
||||
import com.example.base.ui.BaseFragment
|
||||
import com.google.gson.Gson
|
||||
|
|
@ -87,6 +89,10 @@ class MainFragment : BaseFragment<FragmentMainBinding, MainViewModel>() {
|
|||
|
||||
EventReportManager.eventReport(EventConstants.HOME_BOTTOM_TAB_CHECK, tabText[currentPosition], "")
|
||||
}
|
||||
|
||||
binding.ivPublish.onClick {
|
||||
PublishBidDialog().show(childFragmentManager, "")
|
||||
}
|
||||
}
|
||||
|
||||
override fun initData() {
|
||||
|
|
|
|||
|
|
@ -0,0 +1,5 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<selector xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<item android:drawable="@drawable/shape_125ffe_cor25" android:state_checked="true"/>
|
||||
<item android:drawable="@drawable/shape_trans_bg" android:state_checked="false"/>
|
||||
</selector>
|
||||
|
|
@ -0,0 +1,5 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<selector xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<item android:color="@color/white" android:state_checked="true"/>
|
||||
<item android:color="@color/color_707a89" android:state_checked="false"/>
|
||||
</selector>
|
||||
|
|
@ -0,0 +1,5 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<shape xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<solid android:color="@color/color_125ffe"/>
|
||||
<corners android:radius="@dimen/dp_25"/>
|
||||
</shape>
|
||||
|
|
@ -0,0 +1,5 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<shape xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<solid android:color="#F1F6FF"/>
|
||||
<corners android:radius="@dimen/dp_4"/>
|
||||
</shape>
|
||||
|
|
@ -0,0 +1,5 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<shape xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<solid android:color="#F3F7FF"/>
|
||||
<corners android:radius="@dimen/dp_25"/>
|
||||
</shape>
|
||||
|
|
@ -0,0 +1,8 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<shape xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<solid android:color="@color/transparent" />
|
||||
<corners android:radius="@dimen/dp_10" />
|
||||
<stroke
|
||||
android:width="@dimen/dp_1"
|
||||
android:color="@color/white" />
|
||||
</shape>
|
||||
|
|
@ -0,0 +1,155 @@
|
|||
<?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">
|
||||
|
||||
<View
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="0dp"
|
||||
android:background="#F7F9FD"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@id/tv_title" />
|
||||
|
||||
<androidx.appcompat.widget.AppCompatImageView
|
||||
android:id="@+id/iv_top_bg"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="0dp"
|
||||
android:src="@mipmap/ic_publish_dialog_top_bg"
|
||||
app:layout_constraintDimensionRatio="h,1125:873"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tv_title"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="@dimen/dp_16"
|
||||
android:layout_marginTop="@dimen/dp_55"
|
||||
android:text="信息发布"
|
||||
android:textColor="@color/white"
|
||||
android:textSize="28sp"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
|
||||
<eightbitlab.com.blurview.BlurView
|
||||
android:id="@+id/layout_bid"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="@dimen/dp_16"
|
||||
android:layout_marginTop="@dimen/dp_30"
|
||||
app:blurOverlayColor="#80ffffff"
|
||||
android:background="@drawable/shape_publish_dialog_option_bg"
|
||||
app:layout_constraintEnd_toStartOf="@id/layout_goods"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@id/tv_title">
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:gravity="center"
|
||||
android:orientation="vertical">
|
||||
|
||||
<androidx.appcompat.widget.AppCompatImageView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="@dimen/dp_30"
|
||||
android:src="@mipmap/ic_publish_dialog_icon1" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tv_bid_title"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="@dimen/dp_16"
|
||||
android:text="招标信息"
|
||||
android:textColor="@color/color_1a1a1a"
|
||||
android:textSize="@dimen/sp_20" />
|
||||
|
||||
<TextView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="@dimen/dp_8"
|
||||
android:text="我是甲方"
|
||||
android:textColor="@color/color_1a1a1a"
|
||||
android:textSize="@dimen/sp_14" />
|
||||
|
||||
<TextView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="@dimen/dp_2"
|
||||
android:layout_marginBottom="@dimen/dp_26"
|
||||
android:text="发布招标/采购等信息"
|
||||
android:textColor="@color/color_999999"
|
||||
android:textSize="@dimen/sp_14" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
</eightbitlab.com.blurview.BlurView>
|
||||
|
||||
<eightbitlab.com.blurview.BlurView
|
||||
android:id="@+id/layout_goods"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="@dimen/dp_10"
|
||||
android:layout_marginTop="@dimen/dp_30"
|
||||
android:layout_marginEnd="@dimen/dp_16"
|
||||
app:blurOverlayColor="#80ffffff"
|
||||
android:background="@drawable/shape_publish_dialog_option_bg"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toEndOf="@id/layout_bid"
|
||||
app:layout_constraintTop_toBottomOf="@id/tv_title">
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:gravity="center"
|
||||
android:orientation="vertical">
|
||||
|
||||
<androidx.appcompat.widget.AppCompatImageView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="@dimen/dp_30"
|
||||
android:src="@mipmap/ic_publish_dialog_icon1" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tv_goods_title"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="@dimen/dp_16"
|
||||
android:text="合作信息"
|
||||
android:textColor="@color/color_1a1a1a"
|
||||
android:textSize="@dimen/sp_20" />
|
||||
|
||||
<TextView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="@dimen/dp_8"
|
||||
android:text="我是已方"
|
||||
android:textColor="@color/color_1a1a1a"
|
||||
android:textSize="@dimen/sp_14" />
|
||||
|
||||
<TextView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="@dimen/dp_2"
|
||||
android:layout_marginBottom="@dimen/dp_26"
|
||||
android:text="发布招标/采购等信息"
|
||||
android:textColor="@color/color_999999"
|
||||
android:textSize="@dimen/sp_14" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
</eightbitlab.com.blurview.BlurView>
|
||||
|
||||
<androidx.appcompat.widget.AppCompatImageView
|
||||
android:id="@+id/iv_close"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="@dimen/dp_56"
|
||||
android:layout_marginBottom="@dimen/dp_40"
|
||||
android:src="@mipmap/ic_publish_dialog_close"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@id/layout_bid" />
|
||||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
|
|
@ -0,0 +1,74 @@
|
|||
<?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="wrap_content"
|
||||
android:background="@drawable/shape_white_top_cor16">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tv_title"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="@dimen/dp_16"
|
||||
android:text="选择类型"
|
||||
android:textColor="@color/color_1a1a1a"
|
||||
android:textSize="@dimen/sp_16"
|
||||
android:textStyle="bold"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
|
||||
<androidx.appcompat.widget.AppCompatImageView
|
||||
android:id="@+id/iv_close"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginEnd="@dimen/dp_12"
|
||||
android:padding="@dimen/dp_3"
|
||||
android:src="@mipmap/ic_close"
|
||||
app:layout_constraintBottom_toBottomOf="@id/tv_title"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintTop_toTopOf="@id/tv_title" />
|
||||
|
||||
<androidx.recyclerview.widget.RecyclerView
|
||||
android:id="@+id/mRecyclerView"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="@dimen/dp_16"
|
||||
app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"
|
||||
app:layout_constraintHeight_max="350dp"
|
||||
app:layout_constraintTop_toBottomOf="@id/tv_title"
|
||||
tools:listitem="@layout/listitem_bid_type" />
|
||||
|
||||
<View
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="@dimen/dp_1"
|
||||
android:background="#E8E8E8"
|
||||
app:layout_constraintTop_toBottomOf="@id/mRecyclerView" />
|
||||
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
android:id="@+id/layout_bottom"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:paddingStart="@dimen/dp_16"
|
||||
android:paddingTop="@dimen/dp_9"
|
||||
android:paddingEnd="@dimen/dp_16"
|
||||
android:paddingBottom="@dimen/dp_30"
|
||||
app:layout_constraintTop_toBottomOf="@id/mRecyclerView">
|
||||
|
||||
<com.cheng.bole.widget.CommonShapeView
|
||||
android:id="@+id/btn_next"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="@dimen/dp_46"
|
||||
android:fontFamily="sans-serif-medium"
|
||||
android:text="确定"
|
||||
android:textColor="@color/white"
|
||||
android:textSize="@dimen/sp_16"
|
||||
app:csb_cornerRadius="@dimen/dp_10"
|
||||
app:csb_fillColor="@color/color_125ffe"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
|
||||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
|
|
@ -491,6 +491,7 @@
|
|||
android:layout_height="@dimen/dp_36"
|
||||
android:drawableStart="@mipmap/ic_add_subscribe_keyword"
|
||||
android:text="添加"
|
||||
android:textSize="@dimen/sp_14"
|
||||
android:textColor="@color/white"
|
||||
app:csb_cornerRadius="@dimen/dp_10"
|
||||
app:csb_drawablePosition="left"
|
||||
|
|
|
|||
|
|
@ -0,0 +1,666 @@
|
|||
<?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.core.widget.NestedScrollView
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="0dp"
|
||||
app:layout_constraintBottom_toTopOf="@id/layout_bottom"
|
||||
app:layout_constraintTop_toTopOf="parent">
|
||||
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent">
|
||||
|
||||
<androidx.appcompat.widget.AppCompatImageView
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="0dp"
|
||||
android:src="@mipmap/ic_publish_bid_top_bg"
|
||||
app:layout_constraintDimensionRatio="h,1125:804" />
|
||||
|
||||
<TextView
|
||||
android:layout_width="wrap_content"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
android:textSize="@dimen/sp_17"
|
||||
android:textColor="@color/color_1a1a1a"
|
||||
android:layout_marginTop="96dp"
|
||||
android:layout_marginStart="@dimen/dp_20"
|
||||
android:text="Hi,为了服务发布的真实性,\n请认真填写信息哦~"
|
||||
android:layout_height="wrap_content"/>
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="168dp"
|
||||
android:orientation="vertical"
|
||||
android:paddingTop="@dimen/dp_5"
|
||||
app:layout_constraintTop_toTopOf="parent">
|
||||
|
||||
<com.lihang.ShadowLayout
|
||||
android:id="@+id/layout_reject_reason"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="@dimen/dp_9"
|
||||
android:layout_marginEnd="@dimen/dp_9"
|
||||
android:visibility="gone"
|
||||
app:hl_cornerRadius="@dimen/dp_12"
|
||||
app:hl_shadowColor="#0d4a4f5b"
|
||||
app:hl_shadowLimit="@dimen/dp_7">
|
||||
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:paddingStart="@dimen/dp_14"
|
||||
android:paddingTop="@dimen/dp_12"
|
||||
android:paddingEnd="@dimen/dp_14"
|
||||
android:paddingBottom="@dimen/dp_12">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tv_status"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="已驳回"
|
||||
android:textColor="@color/color_ff493c"
|
||||
android:textSize="@dimen/sp_14"
|
||||
android:textStyle="bold"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tv_reason"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="@dimen/dp_6"
|
||||
android:text="理由:图片不符合"
|
||||
android:textColor="@color/color_999999"
|
||||
android:textSize="@dimen/sp_12"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@id/tv_status" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tv_time"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="2025-07-29 12:14"
|
||||
android:textColor="#ADADAD"
|
||||
android:textSize="@dimen/sp_10"
|
||||
app:layout_constraintBottom_toBottomOf="@id/tv_status"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintTop_toTopOf="@id/tv_status" />
|
||||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
|
||||
</com.lihang.ShadowLayout>
|
||||
|
||||
<com.lihang.ShadowLayout
|
||||
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">
|
||||
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:paddingTop="@dimen/dp_14"
|
||||
android:paddingBottom="@dimen/dp_14">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tv_bid_info_title"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:drawablePadding="@dimen/dp_6"
|
||||
android:text="招标信息"
|
||||
android:textColor="@color/color_1a1a1a"
|
||||
android:textSize="@dimen/sp_16"
|
||||
android:textStyle="bold"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
|
||||
<TextView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="@dimen/dp_2"
|
||||
android:text="*"
|
||||
android:textColor="@color/color_ff493c"
|
||||
android:textSize="@dimen/dp_15"
|
||||
app:layout_constraintStart_toEndOf="@id/tv_bid_info_title"
|
||||
app:layout_constraintTop_toTopOf="@id/tv_bid_info_title" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tv_project_type_title"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="@dimen/dp_12"
|
||||
android:layout_marginTop="@dimen/dp_14"
|
||||
android:text="项目类型"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@id/tv_bid_info_title" />
|
||||
|
||||
<TextView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="@dimen/dp_2"
|
||||
android:text="*"
|
||||
android:textColor="@color/color_ff493c"
|
||||
android:textSize="@dimen/dp_15"
|
||||
app:layout_constraintStart_toEndOf="@id/tv_project_type_title"
|
||||
app:layout_constraintTop_toTopOf="@id/tv_project_type_title" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tv_project_type"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="@dimen/dp_48"
|
||||
android:layout_margin="@dimen/dp_12"
|
||||
android:drawableEnd="@mipmap/ic_arrow_dp18"
|
||||
android:gravity="center_vertical"
|
||||
android:hint="请选择类型"
|
||||
android:maxLines="1"
|
||||
android:paddingStart="@dimen/dp_12"
|
||||
android:paddingEnd="@dimen/dp_8"
|
||||
android:singleLine="true"
|
||||
android:textColor="@color/color_1a1a1a"
|
||||
android:textColorHint="@color/color_bcbcbc"
|
||||
android:textSize="@dimen/sp_14"
|
||||
app:layout_constraintTop_toBottomOf="@id/tv_project_type_title" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tv_project_name_title"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="@dimen/dp_12"
|
||||
android:layout_marginTop="@dimen/dp_14"
|
||||
android:text="项目名称"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@id/tv_project_type" />
|
||||
|
||||
<TextView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="@dimen/dp_2"
|
||||
android:text="*"
|
||||
android:textColor="@color/color_ff493c"
|
||||
android:textSize="@dimen/dp_15"
|
||||
app:layout_constraintStart_toEndOf="@id/tv_project_name_title"
|
||||
app:layout_constraintTop_toTopOf="@id/tv_project_name_title" />
|
||||
|
||||
<androidx.appcompat.widget.AppCompatEditText
|
||||
android:id="@+id/et_project_name"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="@dimen/dp_48"
|
||||
android:layout_margin="@dimen/dp_12"
|
||||
android:background="@null"
|
||||
android:gravity="center_vertical"
|
||||
android:hint="请输入项目名称"
|
||||
android:maxLines="1"
|
||||
android:paddingStart="@dimen/dp_12"
|
||||
android:paddingEnd="@dimen/dp_12"
|
||||
android:singleLine="true"
|
||||
android:textColor="@color/color_1a1a1a"
|
||||
android:textColorHint="@color/color_bcbcbc"
|
||||
android:textSize="@dimen/sp_14"
|
||||
app:layout_constraintTop_toBottomOf="@id/tv_project_name_title" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tv_project_price_title"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="@dimen/dp_12"
|
||||
android:layout_marginTop="@dimen/dp_14"
|
||||
android:text="项目价格"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@id/et_project_name" />
|
||||
|
||||
<TextView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="@dimen/dp_2"
|
||||
android:text="*"
|
||||
android:textColor="@color/color_ff493c"
|
||||
android:textSize="@dimen/dp_15"
|
||||
app:layout_constraintStart_toEndOf="@id/tv_project_price_title"
|
||||
app:layout_constraintTop_toTopOf="@id/tv_project_price_title" />
|
||||
|
||||
<androidx.appcompat.widget.AppCompatEditText
|
||||
android:id="@+id/et_project_price"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="@dimen/dp_48"
|
||||
android:layout_margin="@dimen/dp_12"
|
||||
android:background="@null"
|
||||
android:gravity="center_vertical"
|
||||
android:hint="请输入项目价格"
|
||||
android:inputType="numberDecimal"
|
||||
android:maxLines="1"
|
||||
android:paddingStart="@dimen/dp_12"
|
||||
android:paddingEnd="@dimen/dp_30"
|
||||
android:singleLine="true"
|
||||
android:textColor="@color/color_1a1a1a"
|
||||
android:textColorHint="@color/color_bcbcbc"
|
||||
android:textSize="@dimen/sp_14"
|
||||
app:layout_constraintTop_toBottomOf="@id/tv_project_price_title" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tv_unit"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginEnd="@dimen/dp_12"
|
||||
android:text="元"
|
||||
android:textColor="@color/color_1a1a1a"
|
||||
android:textSize="@dimen/sp_14"
|
||||
app:layout_constraintBottom_toBottomOf="@id/et_project_price"
|
||||
app:layout_constraintEnd_toEndOf="@id/et_project_price"
|
||||
app:layout_constraintTop_toTopOf="@id/et_project_price" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tv_project_area_title"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="@dimen/dp_12"
|
||||
android:layout_marginTop="@dimen/dp_14"
|
||||
android:text="项目地区"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@id/et_project_price" />
|
||||
|
||||
<TextView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="@dimen/dp_2"
|
||||
android:text="*"
|
||||
android:textColor="@color/color_ff493c"
|
||||
android:textSize="@dimen/dp_15"
|
||||
app:layout_constraintStart_toEndOf="@id/tv_project_area_title"
|
||||
app:layout_constraintTop_toTopOf="@id/tv_project_area_title" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tv_project_area"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="@dimen/dp_48"
|
||||
android:layout_margin="@dimen/dp_12"
|
||||
android:background="@null"
|
||||
android:drawableEnd="@mipmap/ic_arrow_dp18"
|
||||
android:gravity="center_vertical"
|
||||
android:hint="请选择地区"
|
||||
android:maxLines="1"
|
||||
android:paddingStart="@dimen/dp_12"
|
||||
android:paddingEnd="@dimen/dp_8"
|
||||
android:singleLine="true"
|
||||
android:textColor="@color/color_1a1a1a"
|
||||
android:textColorHint="@color/color_bcbcbc"
|
||||
android:textSize="@dimen/sp_14"
|
||||
app:layout_constraintTop_toBottomOf="@id/tv_project_area_title" />
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
</com.lihang.ShadowLayout>
|
||||
|
||||
<com.lihang.ShadowLayout
|
||||
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">
|
||||
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:paddingBottom="@dimen/dp_14">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tv_project_info_title"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="@dimen/dp_14"
|
||||
android:drawablePadding="@dimen/dp_6"
|
||||
android:text="项目信息"
|
||||
android:textColor="@color/color_1a1a1a"
|
||||
android:textSize="@dimen/sp_16"
|
||||
android:textStyle="bold"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tv_image_count"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="@dimen/dp_2"
|
||||
android:text="(0/10)"
|
||||
android:textColor="@color/color_999999"
|
||||
android:textSize="@dimen/sp_14"
|
||||
android:visibility="gone"
|
||||
app:layout_constraintBottom_toBottomOf="@id/tv_project_info_title"
|
||||
app:layout_constraintStart_toEndOf="@id/tv_project_info_title"
|
||||
app:layout_constraintTop_toTopOf="@id/tv_project_info_title" />
|
||||
|
||||
<TextView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="@dimen/dp_2"
|
||||
android:text="*"
|
||||
android:textColor="@color/color_ff493c"
|
||||
android:textSize="@dimen/dp_15"
|
||||
app:layout_constraintStart_toEndOf="@id/tv_image_count"
|
||||
app:layout_constraintTop_toTopOf="@id/tv_project_info_title" />
|
||||
|
||||
<RadioGroup
|
||||
android:id="@+id/rg_project_info_type"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginEnd="@dimen/dp_10"
|
||||
android:background="@drawable/shape_f3f7ff_cor25"
|
||||
android:gravity="center"
|
||||
android:orientation="horizontal"
|
||||
android:padding="@dimen/dp_2"
|
||||
app:layout_constraintBottom_toBottomOf="@id/tv_project_info_title"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintTop_toTopOf="@id/tv_project_info_title">
|
||||
|
||||
<RadioButton
|
||||
android:id="@+id/rb1"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="@dimen/dp_24"
|
||||
android:background="@drawable/selector_project_info_tab_bg"
|
||||
android:button="@null"
|
||||
android:checked="true"
|
||||
android:gravity="center"
|
||||
android:paddingStart="@dimen/dp_10"
|
||||
android:paddingEnd="@dimen/dp_10"
|
||||
android:text="文本"
|
||||
android:textColor="@drawable/selector_project_info_tab_text_color"
|
||||
android:textSize="@dimen/sp_12" />
|
||||
|
||||
<RadioButton
|
||||
android:id="@+id/rb2"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="@dimen/dp_24"
|
||||
android:background="@drawable/selector_project_info_tab_bg"
|
||||
android:button="@null"
|
||||
android:gravity="center"
|
||||
android:paddingStart="@dimen/dp_10"
|
||||
android:paddingEnd="@dimen/dp_10"
|
||||
android:text="图片"
|
||||
android:textColor="@drawable/selector_project_info_tab_text_color"
|
||||
android:textSize="@dimen/sp_12" />
|
||||
</RadioGroup>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tv_image_limit_tip"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="@dimen/dp_12"
|
||||
android:layout_marginTop="@dimen/dp_6"
|
||||
android:text="您可以将项目文件拍照后上传,单张不得超过10M"
|
||||
android:textColor="@color/color_999999"
|
||||
android:textSize="@dimen/sp_10"
|
||||
android:visibility="gone"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@id/tv_project_info_title" />
|
||||
|
||||
<androidx.appcompat.widget.AppCompatEditText
|
||||
android:id="@+id/et_project_info"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="0dp"
|
||||
android:layout_marginStart="@dimen/dp_12"
|
||||
android:layout_marginTop="@dimen/dp_15"
|
||||
android:layout_marginEnd="@dimen/dp_12"
|
||||
android:background="@null"
|
||||
android:gravity="start|top"
|
||||
android:hint="请复制招标文档中的文本粘贴至此处,也可以自己撰写..."
|
||||
android:maxLength="20000"
|
||||
android:padding="@dimen/dp_12"
|
||||
android:textColor="@color/color_1a1a1a"
|
||||
android:textColorHint="@color/color_bcbcbc"
|
||||
android:textSize="@dimen/sp_14"
|
||||
app:layout_constraintDimensionRatio="h,319:200"
|
||||
app:layout_constraintTop_toBottomOf="@id/tv_image_limit_tip" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tv_text_count"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginEnd="@dimen/dp_8"
|
||||
android:layout_marginBottom="@dimen/dp_8"
|
||||
android:text="0/20000"
|
||||
android:textColor="@color/color_999999"
|
||||
android:textSize="@dimen/sp_10"
|
||||
app:layout_constraintBottom_toBottomOf="@id/et_project_info"
|
||||
app:layout_constraintEnd_toEndOf="@id/et_project_info" />
|
||||
|
||||
<androidx.recyclerview.widget.RecyclerView
|
||||
android:id="@+id/rv_images"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="@dimen/dp_6"
|
||||
android:layout_marginTop="@dimen/dp_7"
|
||||
android:layout_marginEnd="@dimen/dp_6"
|
||||
android:visibility="gone"
|
||||
app:layoutManager="androidx.recyclerview.widget.GridLayoutManager"
|
||||
app:layout_constraintTop_toBottomOf="@id/tv_image_limit_tip"
|
||||
app:spanCount="5"
|
||||
tools:itemCount="1"
|
||||
tools:listitem="@layout/listitem_add_bid_img" />
|
||||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
</com.lihang.ShadowLayout>
|
||||
|
||||
<com.lihang.ShadowLayout
|
||||
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">
|
||||
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:paddingTop="@dimen/dp_14"
|
||||
android:paddingBottom="@dimen/dp_14">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tv_project_files_title"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:drawablePadding="@dimen/dp_6"
|
||||
android:text="项目文件"
|
||||
android:textColor="@color/color_1a1a1a"
|
||||
android:textSize="@dimen/sp_16"
|
||||
android:textStyle="bold"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tv_file_count"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="@dimen/dp_2"
|
||||
android:text="(0/5)"
|
||||
android:textColor="@color/color_999999"
|
||||
android:textSize="@dimen/sp_14"
|
||||
app:layout_constraintBottom_toBottomOf="@id/tv_project_files_title"
|
||||
app:layout_constraintStart_toEndOf="@id/tv_project_files_title"
|
||||
app:layout_constraintTop_toTopOf="@id/tv_project_files_title" />
|
||||
|
||||
<TextView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="@dimen/dp_2"
|
||||
android:text="*"
|
||||
android:textColor="@color/color_ff493c"
|
||||
android:textSize="@dimen/dp_15"
|
||||
app:layout_constraintStart_toEndOf="@id/tv_file_count"
|
||||
app:layout_constraintTop_toTopOf="@id/tv_file_count" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tv_file_limit_tip"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="@dimen/dp_12"
|
||||
android:layout_marginTop="@dimen/dp_6"
|
||||
android:text="上传文件或者其他附件,每个文件不得超过5M"
|
||||
android:textColor="@color/color_999999"
|
||||
android:textSize="@dimen/sp_10"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@id/tv_project_files_title" />
|
||||
|
||||
<androidx.recyclerview.widget.RecyclerView
|
||||
android:id="@+id/rv_files"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="@dimen/dp_4"
|
||||
app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"
|
||||
app:layout_constraintTop_toBottomOf="@id/tv_file_limit_tip"
|
||||
tools:itemCount="1"
|
||||
tools:listitem="@layout/listitem_publish_bid_file" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tv_upload_file"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="@dimen/dp_30"
|
||||
android:drawableStart="@mipmap/ic_upload_file"
|
||||
android:drawablePadding="@dimen/dp_2"
|
||||
android:gravity="center"
|
||||
android:text="上传PDF"
|
||||
android:textColor="@color/color_ff493c"
|
||||
android:textSize="@dimen/sp_14"
|
||||
android:textStyle="bold"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@id/rv_files" />
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
|
||||
</com.lihang.ShadowLayout>
|
||||
|
||||
<com.lihang.ShadowLayout
|
||||
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">
|
||||
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:paddingTop="@dimen/dp_14"
|
||||
android:paddingBottom="@dimen/dp_14">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tv_contacts_info_title"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:drawablePadding="@dimen/dp_6"
|
||||
android:text="联系人信息"
|
||||
android:textColor="@color/color_1a1a1a"
|
||||
android:textSize="@dimen/sp_16"
|
||||
android:textStyle="bold"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
|
||||
<TextView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="@dimen/dp_2"
|
||||
android:text="*"
|
||||
android:textColor="@color/color_ff493c"
|
||||
android:textSize="@dimen/dp_15"
|
||||
app:layout_constraintStart_toEndOf="@id/tv_contacts_info_title"
|
||||
app:layout_constraintTop_toTopOf="@id/tv_contacts_info_title" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tv_contacts_limit_tip"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="@dimen/dp_12"
|
||||
android:layout_marginTop="@dimen/dp_6"
|
||||
android:text="至少有一个联系人"
|
||||
android:textColor="@color/color_999999"
|
||||
android:textSize="@dimen/sp_10"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@id/tv_contacts_info_title" />
|
||||
|
||||
<androidx.recyclerview.widget.RecyclerView
|
||||
android:id="@+id/rv_contacts"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="@dimen/dp_12"
|
||||
android:layout_marginTop="@dimen/dp_4"
|
||||
android:layout_marginEnd="@dimen/dp_12"
|
||||
app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"
|
||||
app:layout_constraintTop_toBottomOf="@id/tv_contacts_limit_tip"
|
||||
tools:itemCount="1"
|
||||
tools:listitem="@layout/listitem_publish_bid_contacts" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tv_add_contacts"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="@dimen/dp_30"
|
||||
android:drawableStart="@mipmap/ic_add_contacts"
|
||||
android:drawablePadding="@dimen/dp_2"
|
||||
android:gravity="center"
|
||||
android:text="添加联系人"
|
||||
android:textColor="@color/color_ff493c"
|
||||
android:textSize="@dimen/sp_14"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@id/rv_contacts" />
|
||||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
</com.lihang.ShadowLayout>
|
||||
|
||||
<Space
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="@dimen/dp_15" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
|
||||
</androidx.core.widget.NestedScrollView>
|
||||
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
android:id="@+id/layout_bottom"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:background="@color/white"
|
||||
android:paddingStart="@dimen/dp_16"
|
||||
android:paddingTop="@dimen/dp_9"
|
||||
android:paddingEnd="@dimen/dp_16"
|
||||
android:paddingBottom="@dimen/dp_30"
|
||||
app:layout_constraintBottom_toBottomOf="parent">
|
||||
|
||||
<com.cheng.bole.widget.CommonShapeView
|
||||
android:id="@+id/btn_next"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="@dimen/dp_46"
|
||||
android:fontFamily="sans-serif-medium"
|
||||
android:text="提交"
|
||||
android:textColor="@color/white"
|
||||
android:textSize="@dimen/sp_16"
|
||||
app:csb_cornerRadius="@dimen/dp_10"
|
||||
app:csb_fillColor="@color/color_125ffe"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
|
||||
<com.example.base.widget.TitleBar
|
||||
android:id="@+id/mTitleBar"
|
||||
style="@style/Custom.TitleBar"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
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>
|
||||
|
|
@ -0,0 +1,34 @@
|
|||
<?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">
|
||||
|
||||
<androidx.appcompat.widget.AppCompatImageView
|
||||
android:id="@+id/iv_image"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="0dp"
|
||||
android:layout_margin="@dimen/dp_6"
|
||||
app:layout_constraintDimensionRatio="h,1:1"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
|
||||
<androidx.appcompat.widget.AppCompatImageView
|
||||
android:id="@+id/iv_add_image"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="0dp"
|
||||
android:scaleType="center"
|
||||
android:src="@mipmap/ic_add_bid_image"
|
||||
app:layout_constraintBottom_toBottomOf="@id/iv_image"
|
||||
app:layout_constraintEnd_toEndOf="@id/iv_image"
|
||||
app:layout_constraintStart_toStartOf="@id/iv_image"
|
||||
app:layout_constraintTop_toTopOf="@id/iv_image" />
|
||||
|
||||
<androidx.appcompat.widget.AppCompatImageView
|
||||
android:id="@+id/iv_delete"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:src="@mipmap/ic_delete_bid_image"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
|
|
@ -0,0 +1,21 @@
|
|||
<?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="@dimen/dp_50"
|
||||
android:layout_marginStart="@dimen/dp_20"
|
||||
android:layout_marginEnd="@dimen/dp_20">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tv_name"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="招标公告"
|
||||
android:textColor="@color/color_666666"
|
||||
android:textSize="@dimen/sp_14"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
|
|
@ -0,0 +1,34 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="@dimen/dp_52"
|
||||
android:gravity="center_vertical"
|
||||
android:orientation="horizontal">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tv_name"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="@dimen/dp_12"
|
||||
android:text="郭女士"
|
||||
android:textColor="@color/color_1a1a1a"
|
||||
android:textSize="@dimen/sp_14" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tv_phone"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="@dimen/dp_16"
|
||||
android:layout_marginEnd="@dimen/dp_10"
|
||||
android:layout_weight="1"
|
||||
android:text="15826433067"
|
||||
android:textColor="@color/color_666666"
|
||||
android:textSize="@dimen/sp_14" />
|
||||
|
||||
<androidx.appcompat.widget.AppCompatImageView
|
||||
android:id="@+id/iv_edit"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginEnd="@dimen/dp_12"
|
||||
android:src="@mipmap/ic_edit_contacts" />
|
||||
</LinearLayout>
|
||||
|
|
@ -0,0 +1,43 @@
|
|||
<?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="@dimen/dp_54">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tv_name"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="@dimen/dp_12"
|
||||
android:layout_marginEnd="@dimen/dp_12"
|
||||
android:drawableStart="@mipmap/ic_pdf_attachment"
|
||||
android:drawablePadding="@dimen/dp_12"
|
||||
android:ellipsize="end"
|
||||
android:gravity="center_vertical"
|
||||
android:maxLines="1"
|
||||
android:singleLine="true"
|
||||
android:text="25年发票·pdf"
|
||||
android:textColor="@color/color_1a1a1a"
|
||||
android:textSize="@dimen/sp_14"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintEnd_toStartOf="@id/iv_delete"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
|
||||
<androidx.appcompat.widget.AppCompatImageView
|
||||
android:id="@+id/iv_delete"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginEnd="@dimen/dp_12"
|
||||
android:src="@mipmap/ic_delete"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
|
||||
<View
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="@dimen/dp_1"
|
||||
android:layout_marginStart="@dimen/dp_54"
|
||||
android:background="@color/color_eeeeee"
|
||||
app:layout_constraintBottom_toBottomOf="parent" />
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
|
After Width: | Height: | Size: 3.0 KiB |
|
After Width: | Height: | Size: 2.4 KiB |
|
After Width: | Height: | Size: 970 B |
|
After Width: | Height: | Size: 1.9 KiB |
|
After Width: | Height: | Size: 2.1 KiB |
|
After Width: | Height: | Size: 842 KiB |
|
After Width: | Height: | Size: 4.0 KiB |
|
After Width: | Height: | Size: 4.2 KiB |
|
After Width: | Height: | Size: 2.4 KiB |
|
After Width: | Height: | Size: 576 KiB |
|
After Width: | Height: | Size: 877 B |
|
|
@ -84,4 +84,5 @@
|
|||
<color name="color_2a80fc">#2A80FC</color>
|
||||
<color name="color_f8f9fa">#F8F9FA</color>
|
||||
<color name="color_3bbf0f">#3BBF0F</color>
|
||||
<color name="color_707a89">#707A89</color>
|
||||
</resources>
|
||||