콘텐츠 메인

- 선택된 탭으로 탭이 스크롤 되도록 수정
This commit is contained in:
klaus 2025-02-13 19:08:18 +09:00
parent 363d611e0f
commit 519d0cd02a
1 changed files with 22 additions and 1 deletions

View File

@ -2,6 +2,7 @@ package kr.co.vividnext.sodalive.audio_content.main.v2
import android.content.Intent
import android.graphics.Typeface
import android.view.ViewGroup
import android.widget.TextView
import androidx.core.content.res.ResourcesCompat
import com.google.android.material.tabs.TabLayout
@ -17,6 +18,7 @@ import kr.co.vividnext.sodalive.base.BaseActivity
import kr.co.vividnext.sodalive.common.Constants
import kr.co.vividnext.sodalive.databinding.ActivityAudioContentMainBinding
import kr.co.vividnext.sodalive.mypage.alarm.AlarmListActivity
import kotlin.math.min
enum class AudioContentMainTab {
HOME, SERIES, CONTENT, ALARM, ASMR, REPLAY, FREE;
@ -103,10 +105,29 @@ class AudioContentMainActivity : BaseActivity<ActivityAudioContentMainBinding>(
}
})
tabs.getTabAt(startTabPosition.ordinal)?.select()
tabs.getTabAt(startTabPosition.ordinal)?.let {
it.select()
scrollToTab(tabs, startTabPosition.ordinal)
}
replaceFragment(selectedTab = startTabPosition)
}
private fun scrollToTab(tabLayout: TabLayout, position: Int) {
tabLayout.post {
val layout = tabLayout.getChildAt(0) as ViewGroup
val tabView = layout.getChildAt(position)
// 화면 전체 너비
val parentWidth = tabLayout.width
// 선택한 탭의 중심 좌표
val tabCenterX = tabView.left + tabView.width / 2
// 스크롤 할 위치 = 탭의 중심을 화면 중앙에 배치
val scrollToX = tabCenterX - parentWidth / 2
tabLayout.scrollTo(min(tabView.left, scrollToX), 0)
}
}
private fun replaceFragment(selectedTab: AudioContentMainTab) {
val startFragment = when (selectedTab) {
AudioContentMainTab.CONTENT -> AudioContentMainTabContentFragment()