Первая вкладка в таблице не обновляет шрифт и размер текста

#android #kotlin

Вопрос:

У меня есть таблица с пользовательским представлением вкладок, которое изменяет размер и тип лица (по умолчанию выделено жирным шрифтом) при выборе вкладки. Он отлично работает для всех вкладок, кроме первой. Размер и шрифт остаются прежними, в то время как остальные меняются без проблем. Меняется только цвет.

Вот xml — код для представления пользовательской вкладки:

 <?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@android:id/text1"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="start|center_vertical"
    android:textColor="@color/white50"
    android:textSize="16sp"
    android:textAllCaps="true"/>
 

Вот код для изменения цвета текста:

 tabLayout.setTabTextColors(
            ContextCompat.getColor(requireContext(), R.color.white50),
            ContextCompat.getColor(requireContext(), R.color.white))
 

Вот список вкладок, в котором я изменяю шрифт и размер текста:

 tabLayout.addOnTabSelectedListener(object : OnTabSelectedListener {
            override fun onTabSelected(tab: TabLayout.Tab) {
                val view = tab.customView
                if (null == view) {
                    tab.setCustomView(R.layout.text_tab_layout)
                }
                val textView = tab.customView!!.findViewById<TextView>(android.R.id.text1)
                textView.setTextColor(tabLayout.tabTextColors)
                textView.typeface = Typeface.DEFAULT_BOLD
                textView.setTextSize(TypedValue.COMPLEX_UNIT_SP, 20F)
            }

            override fun onTabUnselected(tab: TabLayout.Tab) {
                val view = tab.customView
                if (null == view) {
                    tab.setCustomView(R.layout.text_tab_layout)
                }
                val textView = tab.customView!!.findViewById<TextView>(android.R.id.text1)
                textView.typeface = Typeface.DEFAULT
                textView.setTextSize(TypedValue.COMPLEX_UNIT_SP, 16F)
            }
 

И, наконец, я инициализирую свои вкладки следующим образом:

 categories?.apply {
                viewPager.adapter = VisionCategoryPagerAdapter(childFragmentManager, categories)
                viewPager.setPageTransformer(false) { page, _ ->
                    page.alpha = 0f
                    page.visibility = View.VISIBLE
                    page.animate().alpha(1f).duration =
                        page.resources.getInteger(android.R.integer.config_shortAnimTime)
                            .toLong()
                }
                tabLayout.setupWithViewPager(viewPager)

                val tabCount = tabLayout.tabCount
                for (i in 0 until tabCount) {
                    val tab = tabLayout.getTabAt(i)
                    val tabView = ((tabLayout.getChildAt(0) as ViewGroup).getChildAt(i))
                    tabView.requestLayout()

                    val customTabView = LayoutInflater.from(requireContext()).inflate(R.layout.text_tab_layout, null)
                    tab?.customView = customTabView
                }
            }
 

Есть какие-нибудь подсказки и почему первая вкладка не меняет свой размер и шрифт?