#android-fragments #android-tablayout #android-viewpager2
Вопрос:
я использую viewpagr2 и tablayout в mainactivity ..у меня есть 5 фрагментов, прикрепленных к viewpager ..Приложение запускает и загружает 1 фрагмент fisrt ..но когда я нажимаю на последнюю вкладку (tab5) ..я вижу, что все средние вкладки(фрагменты) отображаются дробно и, наконец, достигают последнего фрагмента (вкладки) ..мой пользовательский интерфейс полностью отстает и не плавный ..может кто-нибудь мне помочь здесь .
вот код
class MainActivity : AppCompatActivity() {
lateinit var bottomLayout : TabLayout
lateinit var mainPager : ViewPager2
lateinit var searchView: SearchView
@SuppressLint("UseCompatLoadingForDrawables")
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
bottomLayout = findViewById(R.id.bottom_tab)
searchView = findViewById(R.id.search_view)
mainPager=findViewById<ViewPager2>(R.id.mainViewPager2)
val adapter= MainViewPagerAdapter(supportFragmentManager, lifecycle)
adapter.createFragment(0)
mainPager.adapter = adapter
val tabTitles= arrayOf("Home", "Categories", "Brand","Cart","Account")
val tabIcons = intArrayOf(R.drawable.ic_baseline_home_24, R.drawable.ic_baseline_categories, R.drawable.ic_brand,R.drawable.ic_baseline_add_shopping_cart_24,R.drawable.ic_baseline_account_circle_24)
for((i, name) in tabTitles.withIndex())
{
//bottomLayout.getTabAt(i)?.text = tabTitles[i]
println( bottomLayout.getTabAt(i)?.text)
bottomLayout.addTab(
bottomLayout.newTab().setIcon(resources.getDrawable(tabIcons[i],null)))
}
mainPager.registerOnPageChangeCallback(object : OnPageChangeCallback() {
override fun onPageSelected(position: Int) {
bottomLayout.selectTab(bottomLayout.getTabAt(position))
}
})
bottomLayout.addOnTabSelectedListener(object : TabLayout.OnTabSelectedListener {
override fun onTabReselected(p0: TabLayout.Tab?) {
}
override fun onTabUnselected(p0: TabLayout.Tab?) {
}
override fun onTabSelected(p0: TabLayout.Tab?) {
if (p0 != null) {
mainPager.currentItem = p0.position
}
}
})
}
Код адаптера Viewpager
class MainViewPagerAdapter(fragmentManager: FragmentManager, lifecycle: Lifecycle): FragmentStateAdapter(fragmentManager, lifecycle) {
private val mFragments: List<Fragment> = ArrayList()
override fun getItemCount(): Int {
return 5
}
override fun createFragment(position: Int): Fragment {
return when(position){
0->{
HomeFragment()
}
1->{
CategoryFragment()
}
2->{
BrandFragment()
}
3->{
CartFragment()
}
4->{
AccountFragment()
}
else->{
HomeFragment()
}
}
}
}