feat(ui): 채팅 탭 내 TabLayout 캐릭터, 톡 탭 추가

This commit is contained in:
2025-08-01 19:25:14 +09:00
parent 3cf57c1f91
commit e90222e8db
8 changed files with 212 additions and 13 deletions

View File

@@ -1,18 +1,96 @@
package kr.co.vividnext.sodalive.chat
import android.content.Intent
import android.os.Bundle
import android.view.View
import com.google.android.material.tabs.TabLayout
import kr.co.vividnext.sodalive.R
import kr.co.vividnext.sodalive.base.BaseFragment
import kr.co.vividnext.sodalive.chat.character.CharacterTabFragment
import kr.co.vividnext.sodalive.chat.talk.TalkTabFragment
import kr.co.vividnext.sodalive.common.SharedPreferenceManager
import kr.co.vividnext.sodalive.databinding.FragmentChatBinding
import kr.co.vividnext.sodalive.mypage.can.charge.CanChargeActivity
import kr.co.vividnext.sodalive.search.SearchActivity
class ChatFragment : BaseFragment<FragmentChatBinding>(FragmentChatBinding::inflate) {
private var currentTab = 0
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
initView()
setupToolbar()
setupTabs()
}
private fun initView() {
// 채팅 화면 초기화 로직
private fun setupToolbar() {
if (SharedPreferenceManager.token.isNotBlank()) {
binding.llShortIcon.visibility = View.VISIBLE
binding.ivSearch.setOnClickListener {
startActivity(
Intent(
requireContext(),
SearchActivity::class.java
)
)
}
binding.ivCharge.setOnClickListener {
startActivity(
Intent(
requireContext(),
CanChargeActivity::class.java
)
)
}
} else {
binding.llShortIcon.visibility = View.GONE
}
}
private fun setupTabs() {
// 탭 추가
binding.tabLayout.addTab(binding.tabLayout.newTab().setText("캐릭터"))
binding.tabLayout.addTab(binding.tabLayout.newTab().setText(""))
// 탭 선택 리스너 설정
binding.tabLayout.addOnTabSelectedListener(object : TabLayout.OnTabSelectedListener {
override fun onTabSelected(tab: TabLayout.Tab) {
currentTab = tab.position
showTabContent(currentTab)
}
override fun onTabUnselected(tab: TabLayout.Tab) {
// 필요한 경우 구현
}
override fun onTabReselected(tab: TabLayout.Tab) {
// 필요한 경우 구현
}
})
// 초기 탭 선택
showTabContent(currentTab)
}
private fun showTabContent(position: Int) {
val fragmentManager = childFragmentManager
val fragmentTransaction = fragmentManager.beginTransaction()
// 기존 프래그먼트 제거
fragmentManager.fragments.forEach {
fragmentTransaction.remove(it)
}
// 선택된 탭에 따라 프래그먼트 표시
val fragment = when (position) {
0 -> CharacterTabFragment()
1 -> TalkTabFragment()
else -> CharacterTabFragment()
}
fragmentTransaction.add(R.id.fl_container, fragment)
fragmentTransaction.commit()
}
}

View File

@@ -0,0 +1,16 @@
package kr.co.vividnext.sodalive.chat.character
import android.os.Bundle
import android.view.View
import kr.co.vividnext.sodalive.base.BaseFragment
import kr.co.vividnext.sodalive.databinding.FragmentCharacterTabBinding
// 캐릭터 탭 프래그먼트
class CharacterTabFragment : BaseFragment<FragmentCharacterTabBinding>(
FragmentCharacterTabBinding::inflate
) {
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
// 캐릭터 탭 초기화 로직
}
}

View File

@@ -0,0 +1,15 @@
package kr.co.vividnext.sodalive.chat.talk
import android.os.Bundle
import android.view.View
import kr.co.vividnext.sodalive.base.BaseFragment
import kr.co.vividnext.sodalive.databinding.FragmentTalkTabBinding
class TalkTabFragment : BaseFragment<FragmentTalkTabBinding>(
FragmentTalkTabBinding::inflate
) {
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
// 톡 탭 초기화 로직
}
}