Android TabLayout 在启动时选择第一个 Tab

use*_*454 9 tabs android selection

我正在使用 Android 设计库中的 TabLayout。我有多个选项卡,每个选项卡在被选中时都有一个操作。所以我有一个属性 startSelection,它执行

tabLayout.getTabAt(startSelection).select();
Run Code Online (Sandbox Code Playgroud)

这将选择选项卡并为此选项卡执行操作。它适用于除第一个选项卡之外的每个选项卡,该选项卡在启动时自动选择,无需 (!) 执行操作。有没有人对此有解决方案?

我不想使用 onTabReselected 方法,因为这会导致 TabLayout 的另一种行为。同样选择第二个选项卡然后选择第一个选项卡也不是一个好的解决方案。

此致

Cam*_*n A 7

我在实现的自定义选项卡布局中遇到了类似的问题,当开始活动时,第一个选项卡不会出现在选定状态,但选项卡 2,3,4... 会在启动时自动选择。

帮助我的解决方案是onResume(),快速选择第二个选项卡,然后返回到第一个选项卡。

    @Override
    protected void onResume() {
        super.onResume();
        mTabLayout.getTabAt(1).select();
        mTabLayout.getTabAt(0).select();
    } 
Run Code Online (Sandbox Code Playgroud)


use*_*454 6

我知道了。解决方案很简单,使用(一次)onTabReselected 并覆盖那里的侦听器。

tabLayout.setOnTabSelectedListener(new OnTabSelectedListener() {

    @Override
    public void onTabSelected(Tab tab) {
        selectTab(tab);
    }

    private void selectTab(Tab tab) {
        // do something                 
    }

    @Override
    public void onTabReselected(Tab tab) {
        if (tab.getPosition() == 0) {
            selectTab(tab);

            tabLayout.setOnTabSelectedListener(new OnTabSelectedListener() {

                @Override
                public void onTabSelected(Tab tab) {
                    selectTab(tab);
                }

                @Override
                public void onTabReselected(Tab arg0) {                             
                }

                @Override
                public void onTabUnselected(Tab arg0) {                             
                }
            });

        }
    }


    @Override
    public void onTabUnselected(Tab tab) {
    }

});
Run Code Online (Sandbox Code Playgroud)