修复禅道上的bug,2.8.0/280

This commit is contained in:
wangyu 2026-03-12 14:42:01 +08:00
parent 15c2543958
commit fe08ad0680
17 changed files with 175 additions and 97 deletions

View File

@ -19,6 +19,7 @@ data class HotWordEntity(
val status: String = "",
val type: String = "",
val weight: String = "",
var isChecked: Boolean = false
var isChecked: Boolean = false,
var anim: Boolean = true
): Serializable
}

View File

@ -1,4 +1,4 @@
package com.cheng.blzb.event
class HomeRefreshEvent {
class HomeRefreshEvent(val refreshData: Boolean = true) {
}

View File

@ -71,6 +71,7 @@ class SelectCouponDialog : DialogFragment() {
binding.mRecyclerView.adapter = mAdapter
mEmptyView.setBtnVisible(false)
mEmptyView.setNoDataLogo(R.mipmap.ic_empty_seat)
mAdapter.setEmptyView(mEmptyView)
mAdapter.setOnItemClickListener { _, _, i ->

View File

@ -1,5 +1,6 @@
package com.cheng.blzb.ui.fragment.guide.adapter
import android.animation.ObjectAnimator
import android.annotation.SuppressLint
import android.content.Context
import android.graphics.Color
@ -8,6 +9,7 @@ import android.view.ViewGroup
import android.view.animation.RotateAnimation
import android.widget.ImageView
import androidx.constraintlayout.widget.ConstraintLayout
import androidx.core.animation.addListener
import androidx.recyclerview.widget.RecyclerView
import com.chad.library.adapter.base.viewholder.BaseViewHolder
import com.cheng.blzb.R
@ -15,14 +17,13 @@ import com.cheng.blzb.bean.HotWordEntity
import com.cheng.blzb.common.Constants
import com.example.base.decoration.GridSpaceItemDecoration
import com.example.base.extensions.onClick
import com.example.base.extensions.visible
import com.example.base.utils.DensityUtils
import com.example.base.utils.SpanUtils
import kotlin.math.ceil
import kotlin.random.Random
class GuideItem3Adapter(val context: Context): RecyclerView.Adapter<BaseViewHolder>() {
val data: MutableList<HotWordEntity.Child> = mutableListOf()
private var showAnim = true
private var mOnKeywordClickListener: ((keyword: HotWordEntity.Child) -> Unit)? = null
@ -61,6 +62,20 @@ class GuideItem3Adapter(val context: Context): RecyclerView.Adapter<BaseViewHold
startRotate(view)
keywordAdapter.setList(getKeywordList(item))
}
if ((position == 0 || position == 2) && item.anim) {
val transX = if (position == 0) -DensityUtils.dp2px(50f).toFloat() else DensityUtils.dp2px(50f).toFloat()
val anim = ObjectAnimator.ofFloat(holder.itemView, "translationX", transX, 0f)
anim.duration = 1000
anim.startDelay = 1000
anim.addListener(onStart = {
holder.itemView.visible()
})
anim.start()
item.anim = false
} else {
holder.itemView.visible()
}
}
override fun getItemCount(): Int {

View File

@ -0,0 +1,46 @@
package com.cheng.blzb.ui.fragment.guide.adapter
import android.content.Context
import android.view.View
import android.view.ViewGroup
import android.widget.BaseAdapter
import android.widget.TextView
import com.cheng.blzb.R
import com.cheng.blzb.bean.AreaEntity
import com.cheng.blzb.bean.HotWordEntity
import com.cheng.blzb.common.Constants
class GuideItem5IndustryAdapter1(val context: Context, val data: List<HotWordEntity.Child>): BaseAdapter() {
override fun getCount(): Int {
return data.size
}
override fun getItem(position: Int): HotWordEntity.Child {
return data[position]
}
override fun getItemId(position: Int): Long {
return position.toLong()
}
override fun getView(position: Int, convertView: View?, parent: ViewGroup?): View {
val view: View
val viewHolder: ViewHolder
if (convertView == null) {
view = View.inflate(context, R.layout.listitem_guide_item5_industry, null)
viewHolder = ViewHolder(view)
view.tag = viewHolder
} else {
view = convertView
viewHolder = convertView.tag as ViewHolder
}
viewHolder.tvName.typeface = Constants.ysbth
viewHolder.tvName.text = getItem(position).name
return view
}
inner class ViewHolder(val view: View) {
val tvName: TextView = view.findViewById(R.id.tv_name)
}
}

View File

@ -46,13 +46,13 @@ class GuideItem3Fragment : BaseFragment<FragmentGuideItem3Binding, GuideViewMode
binding.vpKeywords.setPageTransformer(ZoomOutPageTransformer())
binding.rvSelectedKeywords.adapter = selectedAdapter
binding.rvSelectedKeywords.addItemDecoration(GridSpaceItemDecoration(3, DensityUtils.dp2px(12f), DensityUtils.dp2px(12f)))
binding.rvSelectedKeywords.addItemDecoration(GridSpaceItemDecoration(3, 0, DensityUtils.dp2px(12f)))
}
override fun onLazyLoad() {
super.onLazyLoad()
mAdapter.setList(GuideFragment.hotWordList)
binding.vpKeywords.setCurrentItem(1000 * mAdapter.data.size, false)
binding.vpKeywords.setCurrentItem(1, false)
startAnim()
}
@ -60,16 +60,16 @@ class GuideItem3Fragment : BaseFragment<FragmentGuideItem3Binding, GuideViewMode
super.initListener()
mAdapter.setOnKeywordClickListener { keyword ->
if (!canClick) return@setOnKeywordClickListener
if (!keyword.isChecked && selectedAdapter.data.size == 5) {
toast("最多添加5个关键词")
return@setOnKeywordClickListener
}
if (selectedAdapter.data.find { it.name == keyword.name } == null) {
selectedAdapter.addData(keyword)
binding.tvNodata.gone()
if (selectedAdapter.data.find { it.name == keyword.name } != null) {
toast("关键词已存在")
return@setOnKeywordClickListener
}
selectedAdapter.addData(keyword)
binding.tvNodata.gone()
}
binding.btnAddKeyword.onClick {
@ -79,6 +79,10 @@ class GuideItem3Fragment : BaseFragment<FragmentGuideItem3Binding, GuideViewMode
toast("最多添加5个关键词")
return@onClick
}
if (selectedAdapter.data.find { it.name == keyword } != null) {
toast("关键词已存在")
return@onClick
}
selectedAdapter.addData(HotWordEntity.Child(name = keyword, isChecked = true))
binding.etKeyword.setText(" ")
binding.tvNodata.gone()

View File

@ -18,8 +18,9 @@ import com.cheng.blzb.ui.activity.PublicActivity
import com.cheng.blzb.ui.fragment.guide.GuideFragment
import com.cheng.blzb.ui.fragment.guide.GuideViewModel
import com.cheng.blzb.ui.fragment.guide.adapter.GuideItem5CityAdapter
import com.cheng.blzb.ui.fragment.guide.adapter.GuideItem5IndustryAdapter
import com.cheng.blzb.ui.fragment.guide.adapter.GuideItem5IndustryAdapter1
import com.cheng.blzb.ui.fragment.guide.vip.GuideVipFragment
import com.efs.sdk.memleaksdk.monitor.internal.bi
import com.example.base.extensions.visible
import com.example.base.ui.BaseFragment
import com.example.base.utils.DensityUtils
@ -27,32 +28,24 @@ import com.example.base.utils.ScreenUtils
import com.google.gson.Gson
import com.yy.mobile.rollingtextview.CharOrder
import com.yy.mobile.rollingtextview.strategy.Strategy
import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers
import io.reactivex.rxjava3.core.Observable
import io.reactivex.rxjava3.disposables.Disposable
import org.jetbrains.anko.sdk27.listeners.onTouch
import org.libpag.PAGFile
import java.util.concurrent.TimeUnit
class GuideItem5Fragment : BaseFragment<FragmentGuideItem5Binding, GuideViewModel>() {
private val cityAdapter by lazy { GuideItem5CityAdapter(requireContext(), cityList) }
private val industryAdapter by lazy { GuideItem5IndustryAdapter(requireContext(), hotWordChildList) }
private val industryAdapter by lazy { GuideItem5IndustryAdapter1(requireContext(), hotWordChildList) }
private val hotWordChildList = mutableListOf<HotWordEntity.Child>()
private val cityList = mutableListOf<AreaEntity>()
private var totalInfo: GuideTotalBidEntity? = null
private var industryTask: Disposable? = null
override fun initView() {
super.initView()
binding.tvTitle.typeface = Constants.pmzdbt
binding.tvBidCount.typeface = Constants.ysbth
binding.tvUnit.typeface = Constants.ysbth
binding.rvIndustry.adapter = industryAdapter
}
@SuppressLint("NotifyDataSetChanged")
@ -61,11 +54,10 @@ class GuideItem5Fragment : BaseFragment<FragmentGuideItem5Binding, GuideViewMode
totalInfo = GuideFragment.totalInfo
cityList.addAll(GuideFragment.cityList)
binding.viewFlipper.adapter = cityAdapter
binding.vfCity.adapter = cityAdapter
hotWordChildList.addAll(GuideFragment.hotWordList)
industryAdapter.notifyDataSetChanged()
startIndustryTask()
binding.vfIndustry.adapter = industryAdapter
startAnim()
}
@ -112,6 +104,8 @@ class GuideItem5Fragment : BaseFragment<FragmentGuideItem5Binding, GuideViewMode
binding.layoutInfo.visible()
}, onEnd = {
startNumAnim()
binding.vfCity.startFlipping()
binding.vfIndustry.startFlipping()
})
val progressMaskAnim = ValueAnimator.ofFloat(0f, 1f)
@ -230,30 +224,4 @@ class GuideItem5Fragment : BaseFragment<FragmentGuideItem5Binding, GuideViewMode
}
}, 8700)
}
private fun startIndustryTask() {
if (industryAdapter.data.isEmpty() || industryTask != null) return
industryTask = Observable.interval(300, 9, TimeUnit.MILLISECONDS)
.observeOn(AndroidSchedulers.mainThread())
.subscribe {
if (activity != null) {
binding.rvIndustry.scrollBy(3, 0)
}
}
}
private fun stopIndustryTask() {
industryTask?.dispose()
industryTask = null
}
override fun onStart() {
super.onStart()
startIndustryTask()
}
override fun onStop() {
super.onStop()
stopIndustryTask()
}
}

View File

@ -1,5 +1,6 @@
package com.cheng.blzb.ui.fragment.home
import android.annotation.SuppressLint
import android.view.MotionEvent
import android.view.ViewGroup
import androidx.coordinatorlayout.widget.CoordinatorLayout
@ -357,10 +358,11 @@ class HomeFragment : ListFragment<FragmentHomeBinding, HomeViewModel, BidItemEnt
}
val homeRefreshEvent = RxBus.defaultInstance.toObservable(HomeRefreshEvent::class.java).subscribe {
firstLoad()
if (it.refreshData) firstLoad()
if (activity != null && UserConfigManager.userInfo?.vip != "3") {
if (UserConfigManager.isShowGoodsCouponAnim()) {
mViewModel.getGoodsList()
stopCouponActivityAnim(true)
} else {
stopCouponActivityAnim(false)
mViewModel.couponActivityList()
@ -381,6 +383,8 @@ class HomeFragment : ListFragment<FragmentHomeBinding, HomeViewModel, BidItemEnt
}
f.show(childFragmentManager, GoodsPromotionDialog::class.java.simpleName)
UserConfigManager.hideGoodsCouponAnim()
RxBus.defaultInstance.post(HomeRefreshEvent(false))
}
private fun showRedPacketActivityDialog() {
@ -441,16 +445,21 @@ class HomeFragment : ListFragment<FragmentHomeBinding, HomeViewModel, BidItemEnt
}
}
@SuppressLint("DefaultLocale")
private fun startCountdown() {
stopCountdown()
countdownTask = RxCountDown.countdown(DateUtils.getDayEndTime() - System.currentTimeMillis() / 1000).subscribe {
if (it == 0L) {
startCountdown()
} else {
val minutes = it / 60
val hours = minutes / 60
binding.tvCountdown.text = String.format("%02d:%02d:%02d", hours, minutes % 60, it % 60)
try {
countdownTask = RxCountDown.countdown(DateUtils.getDayEndTime() - System.currentTimeMillis() / 1000).subscribe {
if (it == 0L) {
startCountdown()
} else {
val minutes = it / 60
val hours = minutes / 60
binding.tvCountdown.text = String.format("%02d:%02d:%02d", hours, minutes % 60, it % 60)
}
}
} catch (e: Exception) {
L.d(e)
}
}

View File

@ -23,6 +23,7 @@ import com.cheng.blzb.bean.VipGoodsEntity
import com.cheng.blzb.common.Constants
import com.cheng.blzb.common.EventConstants
import com.cheng.blzb.databinding.FragmentVipBinding
import com.cheng.blzb.event.HomeRefreshEvent
import com.cheng.blzb.event.PayStatusEnum
import com.cheng.blzb.event.PayStatusEvent
import com.cheng.blzb.event.PaySuccessEvent
@ -224,7 +225,7 @@ class VipFragment : BaseFragment<FragmentVipBinding, VipViewModel>() {
}
}
binding.tvCoupon.onClick {
binding.layoutRedpacket.onClick {
if (goodsEntity == null) {
toast("请先选择要开通的会员套餐")
return@onClick
@ -758,6 +759,8 @@ class VipFragment : BaseFragment<FragmentVipBinding, VipViewModel>() {
val f = GoodsPromotionDialog.newInstance(goodsAdapter.data)
f.show(childFragmentManager, GoodsPromotionDialog::class.java.simpleName)
UserConfigManager.hideGoodsCouponAnim()
RxBus.defaultInstance.post(HomeRefreshEvent(false))
}
private fun showRedPacketActivityDialog(isEnter: Boolean) {

View File

@ -91,9 +91,9 @@
android:id="@+id/layout_desc"
android:layout_width="match_parent"
android:layout_height="@dimen/dp_26"
android:layout_marginStart="@dimen/dp_32"
android:layout_marginEnd="@dimen/dp_32"
android:layout_marginBottom="@dimen/dp_30"
android:layout_marginStart="@dimen/dp_30"
android:layout_marginEnd="@dimen/dp_30"
android:layout_marginBottom="@dimen/dp_25"
android:background="@drawable/shape_guide_item1_desc_bg"
android:gravity="center"
android:orientation="horizontal"
@ -106,7 +106,7 @@
android:fontFamily="sans-serif-medium"
android:text="· 实时更新"
android:textColor="@color/white"
android:textSize="@dimen/sp_13" />
android:textSize="@dimen/sp_12" />
<TextView
android:layout_width="wrap_content"
@ -114,7 +114,7 @@
android:layout_marginStart="@dimen/dp_12"
android:text="全国数据收集,海量信息采集"
android:textColor="@color/white"
android:textSize="@dimen/sp_13" />
android:textSize="@dimen/sp_12" />
</LinearLayout>
<androidx.appcompat.widget.AppCompatImageView

View File

@ -122,13 +122,15 @@
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rv_selected_keywords"
android:layout_width="match_parent"
android:layout_height="@dimen/dp_76"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/dp_16"
android:layout_marginTop="@dimen/dp_45"
android:layout_marginTop="@dimen/dp_32"
android:layout_marginEnd="@dimen/dp_16"
android:layout_marginBottom="@dimen/dp_20"
android:overScrollMode="never"
app:layoutManager="androidx.recyclerview.widget.GridLayoutManager"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintHeight_min="@dimen/dp_90"
app:layout_constraintTop_toBottomOf="@id/et_keyword"
app:spanCount="3"
tool:itemCount="5"

View File

@ -14,6 +14,13 @@
android:src="@mipmap/ic_guide_item5_bg"
app:layout_constraintTop_toTopOf="parent" />
<androidx.appcompat.widget.AppCompatImageView
android:layout_width="match_parent"
android:layout_height="0dp"
android:src="@mipmap/ic_guide_item5_top"
app:layout_constraintDimensionRatio="h,1425:234"
app:layout_constraintTop_toTopOf="parent" />
<androidx.appcompat.widget.AppCompatImageView
android:id="@+id/iv_star1"
android:layout_width="match_parent"
@ -120,16 +127,16 @@
android:layout_width="@dimen/dp_40"
android:layout_height="@dimen/dp_40"
android:src="@mipmap/ic_guide_item5_search"
app:layout_constraintBottom_toBottomOf="@id/viewFlipper"
app:layout_constraintBottom_toBottomOf="@id/vf_city"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="@id/viewFlipper" />
app:layout_constraintTop_toTopOf="@id/vf_city" />
<AdapterViewFlipper
android:id="@+id/viewFlipper"
android:id="@+id/vf_city"
android:layout_width="match_parent"
android:layout_height="@dimen/dp_50"
android:autoStart="true"
android:flipInterval="500"
android:autoStart="false"
android:flipInterval="650"
android:inAnimation="@animator/anim_vf_in"
android:loopViews="true"
android:outAnimation="@animator/anim_vf_out"
@ -146,7 +153,7 @@
android:textColor="@color/white"
android:textSize="40sp"
android:textStyle="bold"
app:layout_constraintBottom_toTopOf="@id/rv_industry"
app:layout_constraintBottom_toTopOf="@id/vf_industry"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/layout_city"
@ -171,6 +178,7 @@
android:layout_height="wrap_content"
android:layout_marginBottom="@dimen/dp_25"
android:orientation="horizontal"
android:visibility="gone"
app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
@ -178,6 +186,21 @@
app:layout_constraintTop_toBottomOf="@id/tv_bid_count"
tools:listitem="@layout/listitem_guide_item5_industry" />
<AdapterViewFlipper
android:id="@+id/vf_industry"
android:layout_width="@dimen/dp_100"
android:layout_height="@dimen/dp_40"
android:layout_marginBottom="@dimen/dp_25"
android:autoStart="false"
android:flipInterval="650"
android:inAnimation="@animator/anim_vf_in"
android:loopViews="true"
android:outAnimation="@animator/anim_vf_out"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/tv_bid_count" />
</androidx.constraintlayout.widget.ConstraintLayout>
<ProgressBar

View File

@ -163,8 +163,8 @@
<androidx.appcompat.widget.AppCompatImageView
android:id="@+id/iv_total_info_icon1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_width="86dp"
android:layout_height="70dp"
android:src="@mipmap/ic_guide_vip_total_info_icon1"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
@ -175,7 +175,7 @@
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dp_10"
android:text="0条"
android:textSize="@dimen/sp_20"
android:textSize="@dimen/sp_18"
app:gradient_endColor="@color/color_6dd9f2"
app:gradient_startColor="@color/white"
app:layout_constraintBottom_toTopOf="@id/tv_total_info_title1"
@ -208,8 +208,8 @@
<androidx.appcompat.widget.AppCompatImageView
android:id="@+id/iv_total_info_icon2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_width="86dp"
android:layout_height="70dp"
android:src="@mipmap/ic_guide_vip_total_info_icon2"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
@ -220,7 +220,7 @@
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dp_10"
android:text="0条"
android:textSize="@dimen/sp_20"
android:textSize="@dimen/sp_18"
app:gradient_endColor="@color/color_6dd9f2"
app:gradient_startColor="@color/white"
app:layout_constraintBottom_toTopOf="@id/tv_total_info_title2"
@ -253,8 +253,8 @@
<androidx.appcompat.widget.AppCompatImageView
android:id="@+id/iv_total_info_icon3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_width="86dp"
android:layout_height="70dp"
android:src="@mipmap/ic_guide_vip_total_info_icon3"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
@ -263,9 +263,9 @@
android:id="@+id/tv_total_info_count3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dp_10"
android:layout_marginTop="@dimen/dp_18"
android:text="0亿元"
android:textSize="@dimen/sp_20"
android:textSize="@dimen/sp_18"
app:gradient_endColor="@color/color_6dd9f2"
app:gradient_startColor="@color/white"
app:layout_constraintBottom_toTopOf="@id/tv_total_info_title3"
@ -298,8 +298,8 @@
<androidx.appcompat.widget.AppCompatImageView
android:id="@+id/iv_total_info_icon4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_width="86dp"
android:layout_height="70dp"
android:src="@mipmap/ic_guide_vip_total_info_icon4"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
@ -310,7 +310,7 @@
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dp_10"
android:text="0条"
android:textSize="@dimen/sp_20"
android:textSize="@dimen/sp_18"
app:gradient_endColor="@color/color_6dd9f2"
app:gradient_startColor="@color/white"
app:layout_constraintBottom_toTopOf="@id/tv_total_info_title4"

View File

@ -324,11 +324,10 @@
</androidx.constraintlayout.widget.ConstraintLayout>
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/layout_coupon_redpacket"
android:id="@+id/layout_redpacket"
android:layout_width="match_parent"
android:layout_height="@dimen/dp_44"
android:layout_marginTop="@dimen/dp_12"
android:layout_marginEnd="@dimen/dp_12"
android:background="@drawable/shape_vip_coupon_bg"
android:orientation="vertical"
app:layout_constraintTop_toBottomOf="@id/layout_seat"
@ -377,7 +376,7 @@
android:text="微信支付"
android:textColor="@color/color_fdf7f0"
android:textSize="@dimen/sp_15"
app:layout_constraintTop_toBottomOf="@id/layout_coupon_redpacket" />
app:layout_constraintTop_toBottomOf="@id/layout_redpacket" />
<TextView
android:id="@+id/tv_ali_pay"

View File

@ -1,16 +1,18 @@
<?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:tool="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@mipmap/ic_guide_item3_keyword_bg1"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tool="http://schemas.android.com/tools">
android:visibility="invisible"
tool:visibility="visible">
<LinearLayout
android:id="@+id/layout_base_info"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="@dimen/dp_20"
android:layout_marginEnd="@dimen/dp_16"
android:gravity="center_vertical"
android:orientation="horizontal"
app:layout_constraintEnd_toEndOf="parent"
@ -21,7 +23,7 @@
android:layout_height="wrap_content"
android:text="行业交易规模"
android:textColor="@color/white"
android:textSize="@dimen/sp_12" />
android:textSize="@dimen/sp_11" />
<TextView
android:id="@+id/tv_amount"

View File

@ -3,13 +3,15 @@
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="@dimen/dp_32"
android:layout_marginTop="@dimen/dp_12"
android:background="@mipmap/ic_guide_item3_checked"
android:padding="@dimen/dp_8">
android:paddingStart="@dimen/dp_8"
android:paddingEnd="@dimen/dp_8">
<TextView
android:id="@+id/tv_name"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_height="match_parent"
android:ellipsize="marquee"
android:focusable="true"
android:focusableInTouchMode="true"
@ -21,13 +23,16 @@
android:text="数字电路"
android:textColor="@color/white"
android:textSize="@dimen/sp_12"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toStartOf="@id/iv_delete"
app:layout_constraintStart_toStartOf="parent" />
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<androidx.appcompat.widget.AppCompatImageView
android:id="@+id/iv_delete"
android:layout_width="@dimen/dp_14"
android:layout_height="@dimen/dp_14"
android:layout_width="@dimen/dp_18"
android:layout_height="@dimen/dp_18"
android:padding="@dimen/dp_2"
android:src="@mipmap/ic_delete_subscribe_keyword"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"

Binary file not shown.

After

Width:  |  Height:  |  Size: 44 KiB