Android: как скрыть / показать кнопки, когда выбран текущий элемент в TabLayout? - PullRequest
0 голосов
/ 26 апреля 2020

У меня есть три 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)
        }
    }

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...