feat(home): AI 캐릭터 섹션 간격을 정리한다

This commit is contained in:
2026-06-02 19:20:57 +09:00
parent 8a73ea0472
commit 29e64188c9
3 changed files with 39 additions and 2 deletions

View File

@@ -23,7 +23,8 @@ class HomeAiCharacterAdapter : RecyclerView.Adapter<HomeAiCharacterAdapter.Chara
parent, parent,
false false
) as CharacterChatThumbnailView ) as CharacterChatThumbnailView
view.layoutParams = recyclerItemLayoutParams(parent) (view.layoutParams as ViewGroup.MarginLayoutParams).marginEnd =
parent.resources.getDimensionPixelSize(R.dimen.spacing_4)
return CharacterViewHolder(view) return CharacterViewHolder(view)
} }

View File

@@ -154,7 +154,7 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="@dimen/spacing_14" android:layout_marginTop="@dimen/spacing_14"
android:orientation="horizontal" android:orientation="horizontal"
android:paddingHorizontal="@dimen/spacing_20" android:paddingHorizontal="@dimen/spacing_14"
app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager" /> app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager" />
</LinearLayout> </LinearLayout>

View File

@@ -17,6 +17,7 @@ import androidx.test.core.app.ApplicationProvider
import kr.co.vividnext.sodalive.R import kr.co.vividnext.sodalive.R
import kr.co.vividnext.sodalive.v2.main.home.model.HomeRecommendationFirstAudioContentUiModel import kr.co.vividnext.sodalive.v2.main.home.model.HomeRecommendationFirstAudioContentUiModel
import kr.co.vividnext.sodalive.v2.main.home.model.HomeRecommendationLiveUiModel import kr.co.vividnext.sodalive.v2.main.home.model.HomeRecommendationLiveUiModel
import kr.co.vividnext.sodalive.v2.main.home.ui.HomeAiCharacterAdapter
import kr.co.vividnext.sodalive.v2.main.home.ui.HomeFirstAudioAdapter import kr.co.vividnext.sodalive.v2.main.home.ui.HomeFirstAudioAdapter
import kr.co.vividnext.sodalive.v2.main.home.ui.HomeLiveAdapter import kr.co.vividnext.sodalive.v2.main.home.ui.HomeLiveAdapter
import kr.co.vividnext.sodalive.v2.main.home.ui.HomeRecentDebutCreatorAdapter import kr.co.vividnext.sodalive.v2.main.home.ui.HomeRecentDebutCreatorAdapter
@@ -183,6 +184,41 @@ class HomeMainFragmentLayoutTest {
assertEquals(4.dpToPx(), layoutParams.marginEnd) assertEquals(4.dpToPx(), layoutParams.marginEnd)
} }
@Test
fun `character chat thumbnail preserves figma root dimensions`() {
val thumbnail = inflateViewWithParent(R.layout.view_character_chat_thumbnail)
assertEquals(185.dpToPx(), thumbnail.layoutParams.width)
assertEquals(ViewGroup.LayoutParams.WRAP_CONTENT, thumbnail.layoutParams.height)
}
@Test
fun `home ai character section matches figma list spacing`() {
val root = inflateView(R.layout.fragment_v2_main_home)
val characterList = root.findViewById<RecyclerView>(R.id.rv_home_ai_characters)
val context = ApplicationProvider.getApplicationContext<Context>()
val parent = RecyclerView(context)
parent.layoutManager = LinearLayoutManager(context, RecyclerView.HORIZONTAL, false)
val viewHolder = HomeAiCharacterAdapter().onCreateViewHolder(parent, 0)
val layoutParams = viewHolder.itemView.layoutParams as ViewGroup.MarginLayoutParams
assertEquals(14.dpToPx(), characterList.paddingStart)
assertEquals(14.dpToPx(), characterList.paddingEnd)
assertEquals(14.dpToPx(), (characterList.layoutParams as ViewGroup.MarginLayoutParams).topMargin)
assertEquals(4.dpToPx(), layoutParams.marginEnd)
}
@Test
fun `home ai character adapter preserves layout defined item dimensions`() {
val context = ApplicationProvider.getApplicationContext<Context>()
val parent = RecyclerView(context)
parent.layoutManager = LinearLayoutManager(context, RecyclerView.HORIZONTAL, false)
val viewHolder = HomeAiCharacterAdapter().onCreateViewHolder(parent, 0)
assertEquals(185.dpToPx(), viewHolder.itemView.layoutParams.width)
assertEquals(ViewGroup.LayoutParams.WRAP_CONTENT, viewHolder.itemView.layoutParams.height)
}
@Test @Test
fun `first audio adapter clips thumbnail container`() { fun `first audio adapter clips thumbnail container`() {
val context = ApplicationProvider.getApplicationContext<Context>() val context = ApplicationProvider.getApplicationContext<Context>()