У меня есть три TabItems в TabLayout (tab0, tab1, tab3), которые настраиваются с помощью viewPager2. Нажатие и пролистывание их отключено. Когда пользователь на tab0, я хочу показать только одну кнопку «Далее» на go до tab1. И на вкладке 1 я хочу показать две кнопки, кнопки «Назад» и «Далее» ...
Проблема в том, что действие рассматривает только первый статус макета кнопки. Когда я go на tab1, кнопка «Назад» не отображается, если щелкнуть снова, на вкладке 2 кнопка «Назад» не отображается, поскольку действие рассматривает только состояние следующей кнопки на вкладке 1.
Посмотрите:
class AberturaTalaoActivity : AppCompatActivity() {
private val toolbar by lazy { findViewById<Toolbar>(R.id.toolbar) }
private val tabsAdapter by lazy { TabsAdapter(supportFragmentManager, lifecycle) }
private val viewPager by lazy { findViewById<ViewPager2>(R.id.view_pager) }
private val tabs by lazy { findViewById<TabLayout>(R.id.tabs) }
private val btnNext by lazy { findViewById<Button>(R.id.btnProximo) }
private val btnBack by lazy { findViewById<Button>(R.id.btnAnterior) }
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_abertura_talao)
toolbarSetup()
viewPagerWithTabsSetup()
}
fun viewPagerWithTabsSetup() {
with(viewPager) {
adapter = tabsAdapter
isUserInputEnabled = false
}
TabLayoutMediator(tabs, viewPager) { tab, position ->
tab.text = TAB_TITLES[position]
viewPager.setCurrentItem(tab.position, true)
}.attach()
disableTabsClick()
showNextAndBackButtons()
}
fun disableTabsClick() {
val touchableList: ArrayList<View>? = tabs?.touchables
touchableList?.forEach { it.isEnabled = false }
}
fun showNextAndBackButtons() {
when (viewPager.currentItem) {
0 -> {
btnBack.visibility = View.GONE
btnNext.visibility = View.VISIBLE
btnNext.setOnClickListener { viewPager.currentItem++ }
}
1 -> {
btnBack.visibility = View.VISIBLE
btnNext.visibility = View.VISIBLE
btnNext.setOnClickListener { viewPager.currentItem++ }
btnBack.setOnClickListener { viewPager.currentItem-- }
}
2 -> {
btnNext.visibility = View.GONE
btnBack.visibility = View.VISIBLE
btnBack.setOnClickListener { viewPager.currentItem-- }
}
}
}
fun toolbarSetup() {
setSupportActionBar(toolbar)
supportActionBar?.let {
it.setDisplayShowHomeEnabled(true)
it.setDisplayHomeAsUpEnabled(true)
it.title = getString(R.string.title_abertura_talao_activity)
}
}
}