feat: 메인 홈
- 추천 채널 UI 추가
This commit is contained in:
@@ -36,7 +36,7 @@ android {
|
|||||||
minSdk 23
|
minSdk 23
|
||||||
targetSdk 34
|
targetSdk 34
|
||||||
versionCode 174
|
versionCode 174
|
||||||
versionName "1.38.0"
|
versionName "1.39.0"
|
||||||
}
|
}
|
||||||
|
|
||||||
buildTypes {
|
buildTypes {
|
||||||
|
|||||||
@@ -72,6 +72,7 @@ class HomeFragment : BaseFragment<FragmentHomeBinding>(FragmentHomeBinding::infl
|
|||||||
private lateinit var auditionAdapter: AuditionBannerAdapter
|
private lateinit var auditionAdapter: AuditionBannerAdapter
|
||||||
private lateinit var seriesDayOfWeekAdapter: HomeSeriesAdapter
|
private lateinit var seriesDayOfWeekAdapter: HomeSeriesAdapter
|
||||||
private lateinit var weelyChartAdapter: HomeWeeklyChartAdapter
|
private lateinit var weelyChartAdapter: HomeWeeklyChartAdapter
|
||||||
|
private lateinit var recommendChannelAdapter: HomeRecommendChannelAdapter
|
||||||
private lateinit var homeFreeContentAdapter: HomeContentAdapter
|
private lateinit var homeFreeContentAdapter: HomeContentAdapter
|
||||||
private lateinit var curationAdapter: HomeCurationAdapter
|
private lateinit var curationAdapter: HomeCurationAdapter
|
||||||
|
|
||||||
@@ -167,6 +168,7 @@ class HomeFragment : BaseFragment<FragmentHomeBinding>(FragmentHomeBinding::infl
|
|||||||
setupAudition()
|
setupAudition()
|
||||||
setupSeriesDayOfWeek()
|
setupSeriesDayOfWeek()
|
||||||
setupWeelyChart()
|
setupWeelyChart()
|
||||||
|
setupRecommendChannel()
|
||||||
setupFreeContent()
|
setupFreeContent()
|
||||||
setupCuration()
|
setupCuration()
|
||||||
}
|
}
|
||||||
@@ -860,6 +862,82 @@ class HomeFragment : BaseFragment<FragmentHomeBinding>(FragmentHomeBinding::infl
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private fun setupRecommendChannel() {
|
||||||
|
val spSectionTitle = SpannableString(binding.tvRecommendChannel.text)
|
||||||
|
spSectionTitle.setSpan(
|
||||||
|
ForegroundColorSpan(
|
||||||
|
ContextCompat.getColor(
|
||||||
|
requireContext(),
|
||||||
|
R.color.color_3bb9f1
|
||||||
|
)
|
||||||
|
),
|
||||||
|
0,
|
||||||
|
2,
|
||||||
|
Spanned.SPAN_EXCLUSIVE_EXCLUSIVE
|
||||||
|
)
|
||||||
|
binding.tvRecommendChannel.text = spSectionTitle
|
||||||
|
|
||||||
|
recommendChannelAdapter = HomeRecommendChannelAdapter(
|
||||||
|
onClickCreatorProfile = {
|
||||||
|
startActivity(
|
||||||
|
Intent(requireContext(), UserProfileActivity::class.java).apply {
|
||||||
|
putExtra(Constants.EXTRA_USER_ID, it)
|
||||||
|
}
|
||||||
|
)
|
||||||
|
},
|
||||||
|
onClickContentItem = {
|
||||||
|
startActivity(
|
||||||
|
Intent(requireContext(), AudioContentDetailActivity::class.java).apply {
|
||||||
|
putExtra(Constants.EXTRA_AUDIO_CONTENT_ID, it)
|
||||||
|
}
|
||||||
|
)
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
val recyclerView = binding.rvRecommendChannel
|
||||||
|
recyclerView.layoutManager = LinearLayoutManager(
|
||||||
|
context,
|
||||||
|
LinearLayoutManager.HORIZONTAL,
|
||||||
|
false
|
||||||
|
)
|
||||||
|
recyclerView.addItemDecoration(object : RecyclerView.ItemDecoration() {
|
||||||
|
override fun getItemOffsets(
|
||||||
|
outRect: Rect,
|
||||||
|
view: View,
|
||||||
|
parent: RecyclerView,
|
||||||
|
state: RecyclerView.State
|
||||||
|
) {
|
||||||
|
super.getItemOffsets(outRect, view, parent, state)
|
||||||
|
when (parent.getChildAdapterPosition(view)) {
|
||||||
|
0 -> {
|
||||||
|
outRect.left = 0
|
||||||
|
outRect.right = 8f.dpToPx().toInt()
|
||||||
|
}
|
||||||
|
|
||||||
|
recommendChannelAdapter.itemCount - 1 -> {
|
||||||
|
outRect.left = 8f.dpToPx().toInt()
|
||||||
|
outRect.right = 0
|
||||||
|
}
|
||||||
|
|
||||||
|
else -> {
|
||||||
|
outRect.left = 8f.dpToPx().toInt()
|
||||||
|
outRect.right = 8f.dpToPx().toInt()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
recyclerView.adapter = recommendChannelAdapter
|
||||||
|
|
||||||
|
viewModel.recommendChannelListLiveData.observe(viewLifecycleOwner) {
|
||||||
|
if (it.isNotEmpty()) {
|
||||||
|
binding.llRecommendChannel.visibility = View.VISIBLE
|
||||||
|
recommendChannelAdapter.addItems(it)
|
||||||
|
} else {
|
||||||
|
binding.llRecommendChannel.visibility = View.GONE
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private fun setupFreeContent() {
|
private fun setupFreeContent() {
|
||||||
val spSectionTitle = SpannableString(binding.tvFreeContent.text)
|
val spSectionTitle = SpannableString(binding.tvFreeContent.text)
|
||||||
spSectionTitle.setSpan(
|
spSectionTitle.setSpan(
|
||||||
|
|||||||
@@ -0,0 +1,105 @@
|
|||||||
|
package kr.co.vividnext.sodalive.home
|
||||||
|
|
||||||
|
import android.annotation.SuppressLint
|
||||||
|
import android.view.ViewGroup
|
||||||
|
import androidx.recyclerview.widget.RecyclerView
|
||||||
|
import coil.load
|
||||||
|
import coil.transform.CircleCropTransformation
|
||||||
|
import coil.transform.RoundedCornersTransformation
|
||||||
|
import kr.co.vividnext.sodalive.databinding.ItemHomeRecommendChannelBinding
|
||||||
|
import kr.co.vividnext.sodalive.extensions.moneyFormat
|
||||||
|
|
||||||
|
class HomeRecommendChannelAdapter(
|
||||||
|
private val onClickCreatorProfile: (Long) -> Unit,
|
||||||
|
private val onClickContentItem: (Long) -> Unit
|
||||||
|
) : RecyclerView.Adapter<HomeRecommendChannelAdapter.ViewHolder>() {
|
||||||
|
|
||||||
|
private var items = mutableListOf<RecommendChannelResponse>()
|
||||||
|
|
||||||
|
inner class ViewHolder(
|
||||||
|
private val binding: ItemHomeRecommendChannelBinding
|
||||||
|
) : RecyclerView.ViewHolder(binding.root) {
|
||||||
|
fun bind(item: RecommendChannelResponse) {
|
||||||
|
binding.ivCreatorProfile.load(item.creatorProfileImageUrl) {
|
||||||
|
crossfade(true)
|
||||||
|
placeholder(android.R.drawable.ic_menu_gallery)
|
||||||
|
transformations(CircleCropTransformation())
|
||||||
|
}
|
||||||
|
|
||||||
|
binding.tvNickname.text = item.creatorNickname
|
||||||
|
binding.tvContentCount.text = item.contentCount.moneyFormat()
|
||||||
|
|
||||||
|
binding.ivCreatorProfile.setOnClickListener { onClickCreatorProfile(item.channelId) }
|
||||||
|
binding.llCreatorProfile.setOnClickListener { onClickCreatorProfile(item.channelId) }
|
||||||
|
|
||||||
|
item.contentList.forEachIndexed { index, content ->
|
||||||
|
if (index >= 3) return@forEachIndexed
|
||||||
|
|
||||||
|
when (index) {
|
||||||
|
0 -> {
|
||||||
|
binding.ivCover1.load(content.thumbnailImageUrl) {
|
||||||
|
crossfade(true)
|
||||||
|
placeholder(android.R.drawable.ic_menu_gallery)
|
||||||
|
transformations(RoundedCornersTransformation(12f))
|
||||||
|
}
|
||||||
|
|
||||||
|
binding.tvTitle1.text = content.title
|
||||||
|
binding.tvLikeCount1.text = content.likeCount.moneyFormat()
|
||||||
|
binding.tvCommentCount1.text = content.commentCount.moneyFormat()
|
||||||
|
|
||||||
|
binding.llContent1.setOnClickListener { onClickContentItem(content.contentId) }
|
||||||
|
}
|
||||||
|
|
||||||
|
1 -> {
|
||||||
|
binding.ivCover2.load(content.thumbnailImageUrl) {
|
||||||
|
crossfade(true)
|
||||||
|
placeholder(android.R.drawable.ic_menu_gallery)
|
||||||
|
transformations(RoundedCornersTransformation(12f))
|
||||||
|
}
|
||||||
|
|
||||||
|
binding.tvTitle2.text = content.title
|
||||||
|
binding.tvLikeCount2.text = content.likeCount.moneyFormat()
|
||||||
|
binding.tvCommentCount2.text = content.commentCount.moneyFormat()
|
||||||
|
|
||||||
|
binding.llContent2.setOnClickListener { onClickContentItem(content.contentId) }
|
||||||
|
}
|
||||||
|
|
||||||
|
2 -> {
|
||||||
|
binding.ivCover3.load(content.thumbnailImageUrl) {
|
||||||
|
crossfade(true)
|
||||||
|
placeholder(android.R.drawable.ic_menu_gallery)
|
||||||
|
transformations(RoundedCornersTransformation(12f))
|
||||||
|
}
|
||||||
|
|
||||||
|
binding.tvTitle3.text = content.title
|
||||||
|
binding.tvLikeCount3.text = content.likeCount.moneyFormat()
|
||||||
|
binding.tvCommentCount3.text = content.commentCount.moneyFormat()
|
||||||
|
|
||||||
|
binding.llContent3.setOnClickListener { onClickContentItem(content.contentId) }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ViewHolder(
|
||||||
|
ItemHomeRecommendChannelBinding.inflate(
|
||||||
|
android.view.LayoutInflater.from(parent.context),
|
||||||
|
parent,
|
||||||
|
false
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
override fun onBindViewHolder(holder: ViewHolder, position: Int) {
|
||||||
|
holder.bind(items[position])
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun getItemCount() = items.size
|
||||||
|
|
||||||
|
@SuppressLint("NotifyDataSetChanged")
|
||||||
|
fun addItems(items: List<RecommendChannelResponse>) {
|
||||||
|
this.items.clear()
|
||||||
|
this.items.addAll(items)
|
||||||
|
notifyDataSetChanged()
|
||||||
|
}
|
||||||
|
}
|
||||||
BIN
app/src/main/res/drawable-mdpi/ic_comment_white.png
Normal file
BIN
app/src/main/res/drawable-mdpi/ic_comment_white.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 437 B |
BIN
app/src/main/res/drawable-mdpi/ic_heart_white.png
Normal file
BIN
app/src/main/res/drawable-mdpi/ic_heart_white.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 393 B |
13
app/src/main/res/drawable/bg_home_recommend_channel.xml
Normal file
13
app/src/main/res/drawable/bg_home_recommend_channel.xml
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<shape xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
android:shape="rectangle">
|
||||||
|
|
||||||
|
<gradient
|
||||||
|
android:type="linear"
|
||||||
|
android:startColor="#5ACDE1"
|
||||||
|
android:endColor="#2A339D"
|
||||||
|
android:angle="315" /> <!-- topLeft to bottomRight -->
|
||||||
|
|
||||||
|
<corners android:radius="16dp" />
|
||||||
|
|
||||||
|
</shape>
|
||||||
260
app/src/main/res/layout/item_home_recommend_channel.xml
Normal file
260
app/src/main/res/layout/item_home_recommend_channel.xml
Normal file
@@ -0,0 +1,260 @@
|
|||||||
|
<?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="280dp"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:background="@drawable/bg_home_recommend_channel"
|
||||||
|
android:orientation="vertical"
|
||||||
|
android:padding="20dp">
|
||||||
|
|
||||||
|
<ImageView
|
||||||
|
android:id="@+id/iv_creator_profile"
|
||||||
|
android:layout_width="80dp"
|
||||||
|
android:layout_height="80dp"
|
||||||
|
android:contentDescription="@null"
|
||||||
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
|
app:layout_constraintTop_toTopOf="parent" />
|
||||||
|
|
||||||
|
<LinearLayout
|
||||||
|
android:id="@+id/ll_creator_profile"
|
||||||
|
android:layout_width="0dp"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginStart="6dp"
|
||||||
|
android:gravity="center_vertical"
|
||||||
|
android:orientation="vertical"
|
||||||
|
app:layout_constraintBottom_toBottomOf="@+id/iv_creator_profile"
|
||||||
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
|
app:layout_constraintStart_toEndOf="@+id/iv_creator_profile"
|
||||||
|
app:layout_constraintTop_toTopOf="@+id/iv_creator_profile">
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/tv_nickname"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:fontFamily="@font/pretendard_bold"
|
||||||
|
android:textColor="@color/white"
|
||||||
|
android:textSize="24sp"
|
||||||
|
app:layout_constraintStart_toEndOf="@+id/iv_creator_profile"
|
||||||
|
app:layout_constraintTop_toTopOf="@+id/iv_creator_profile"
|
||||||
|
tools:text="닉네임" />
|
||||||
|
|
||||||
|
<LinearLayout
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginTop="4dp"
|
||||||
|
android:orientation="horizontal">
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:fontFamily="@font/pretendard_regular"
|
||||||
|
android:text="콘텐츠"
|
||||||
|
android:textColor="@color/white"
|
||||||
|
android:textSize="18sp" />
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/tv_content_count"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginStart="4dp"
|
||||||
|
android:fontFamily="@font/pretendard_bold"
|
||||||
|
android:textColor="@color/white"
|
||||||
|
android:textSize="18sp"
|
||||||
|
tools:text="55" />
|
||||||
|
</LinearLayout>
|
||||||
|
</LinearLayout>
|
||||||
|
|
||||||
|
<LinearLayout
|
||||||
|
android:id="@+id/ll_content_1"
|
||||||
|
android:layout_width="0dp"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginTop="12dp"
|
||||||
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
|
app:layout_constraintTop_toBottomOf="@+id/iv_creator_profile">
|
||||||
|
|
||||||
|
<ImageView
|
||||||
|
android:id="@+id/iv_cover_1"
|
||||||
|
android:layout_width="60dp"
|
||||||
|
android:layout_height="60dp"
|
||||||
|
android:contentDescription="@null" />
|
||||||
|
|
||||||
|
<LinearLayout
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginStart="16dp"
|
||||||
|
android:orientation="vertical">
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/tv_title_1"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:ellipsize="end"
|
||||||
|
android:fontFamily="@font/pretendard_bold"
|
||||||
|
android:maxLines="1"
|
||||||
|
android:textColor="@color/white"
|
||||||
|
android:textSize="18sp"
|
||||||
|
tools:text="고품격 음악밥솥" />
|
||||||
|
|
||||||
|
<LinearLayout
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginTop="4dp"
|
||||||
|
android:orientation="horizontal">
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/tv_like_count_1"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:drawablePadding="4dp"
|
||||||
|
android:fontFamily="@font/pretendard_regular"
|
||||||
|
android:textColor="@color/white"
|
||||||
|
android:textSize="18sp"
|
||||||
|
app:drawableStartCompat="@drawable/ic_heart_white"
|
||||||
|
tools:text="999" />
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/tv_comment_count_1"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginStart="12dp"
|
||||||
|
android:drawablePadding="4dp"
|
||||||
|
android:fontFamily="@font/pretendard_regular"
|
||||||
|
android:textColor="@color/white"
|
||||||
|
android:textSize="18sp"
|
||||||
|
app:drawableStartCompat="@drawable/ic_comment_white"
|
||||||
|
tools:text="999" />
|
||||||
|
</LinearLayout>
|
||||||
|
</LinearLayout>
|
||||||
|
</LinearLayout>
|
||||||
|
|
||||||
|
<LinearLayout
|
||||||
|
android:id="@+id/ll_content_2"
|
||||||
|
android:layout_width="0dp"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginTop="12dp"
|
||||||
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
|
app:layout_constraintTop_toBottomOf="@+id/ll_content_1">
|
||||||
|
|
||||||
|
<ImageView
|
||||||
|
android:id="@+id/iv_cover_2"
|
||||||
|
android:layout_width="60dp"
|
||||||
|
android:layout_height="60dp"
|
||||||
|
android:contentDescription="@null" />
|
||||||
|
|
||||||
|
<LinearLayout
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginStart="16dp"
|
||||||
|
android:orientation="vertical">
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/tv_title_2"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:ellipsize="end"
|
||||||
|
android:fontFamily="@font/pretendard_bold"
|
||||||
|
android:maxLines="1"
|
||||||
|
android:textColor="@color/white"
|
||||||
|
android:textSize="18sp"
|
||||||
|
tools:text="고품격 음악밥솥" />
|
||||||
|
|
||||||
|
<LinearLayout
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginTop="4dp"
|
||||||
|
android:orientation="horizontal">
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/tv_like_count_2"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:drawablePadding="4dp"
|
||||||
|
android:fontFamily="@font/pretendard_regular"
|
||||||
|
android:textColor="@color/white"
|
||||||
|
android:textSize="18sp"
|
||||||
|
app:drawableStartCompat="@drawable/ic_heart_white"
|
||||||
|
tools:text="999" />
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/tv_comment_count_2"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginStart="12dp"
|
||||||
|
android:drawablePadding="4dp"
|
||||||
|
android:fontFamily="@font/pretendard_regular"
|
||||||
|
android:textColor="@color/white"
|
||||||
|
android:textSize="18sp"
|
||||||
|
app:drawableStartCompat="@drawable/ic_comment_white"
|
||||||
|
tools:text="999" />
|
||||||
|
</LinearLayout>
|
||||||
|
</LinearLayout>
|
||||||
|
</LinearLayout>
|
||||||
|
|
||||||
|
<LinearLayout
|
||||||
|
android:id="@+id/ll_content_3"
|
||||||
|
android:layout_width="0dp"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginTop="12dp"
|
||||||
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
|
app:layout_constraintTop_toBottomOf="@+id/ll_content_2">
|
||||||
|
|
||||||
|
<ImageView
|
||||||
|
android:id="@+id/iv_cover_3"
|
||||||
|
android:layout_width="60dp"
|
||||||
|
android:layout_height="60dp"
|
||||||
|
android:contentDescription="@null" />
|
||||||
|
|
||||||
|
<LinearLayout
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginStart="16dp"
|
||||||
|
android:orientation="vertical">
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/tv_title_3"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:ellipsize="end"
|
||||||
|
android:fontFamily="@font/pretendard_bold"
|
||||||
|
android:maxLines="1"
|
||||||
|
android:textColor="@color/white"
|
||||||
|
android:textSize="18sp"
|
||||||
|
tools:text="고품격 음악밥솥" />
|
||||||
|
|
||||||
|
<LinearLayout
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginTop="4dp"
|
||||||
|
android:orientation="horizontal">
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/tv_like_count_3"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:drawablePadding="4dp"
|
||||||
|
android:fontFamily="@font/pretendard_regular"
|
||||||
|
android:textColor="@color/white"
|
||||||
|
android:textSize="18sp"
|
||||||
|
app:drawableStartCompat="@drawable/ic_heart_white"
|
||||||
|
tools:text="999" />
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/tv_comment_count_3"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginStart="12dp"
|
||||||
|
android:drawablePadding="4dp"
|
||||||
|
android:fontFamily="@font/pretendard_regular"
|
||||||
|
android:textColor="@color/white"
|
||||||
|
android:textSize="18sp"
|
||||||
|
app:drawableStartCompat="@drawable/ic_comment_white"
|
||||||
|
tools:text="999" />
|
||||||
|
</LinearLayout>
|
||||||
|
</LinearLayout>
|
||||||
|
</LinearLayout>
|
||||||
|
|
||||||
|
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||||
Reference in New Issue
Block a user