#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
}
}
Есть какие-нибудь подсказки и почему первая вкладка не меняет свой размер и шрифт?