web-dev-qa-db-fra.com

android.support.design.widget.TabLayout sélectionnez l'onglet par programme

J'utilise Android.support.design.widget.TabLayout. Il a deux onglets. Si l'utilisateur sélectionne le deuxième onglet. Dans une condition particulière, je veux que l'utilisateur redirige vers le premier onglet et lui interdise d'accéder à l'onglet sencond jusqu'à ce que la condition corresponde. Pour y parvenir, j'ai essayé,

tabLayout.getTabAt(0).select(); 

mais il ne resélectionne pas le premier onglet

20
Pankaj

Cela est dû au fait que cette vue n'est toujours pas initialisée correctement et que vous essayez d'effectuer une action.

Comme solution, il vous suffit d'en mettre un hadler avant de sélectionner l'onglet perticulaire.

new Handler().postDelayed(
    new Runnable(){
        @Override
        public void run() {
            tabLayout.getTabAt(yourTabIndex).select();
        }
}, 100);
48
Mihir Palkhiwala

Voici comment je l'ai résolu:

tabLayout.getTabAt(CurrentItem).getCustomView().setSelected(true);
3

Cela a fonctionné pour moi:

int tabIndex = 2;
tabLayout.setScrollPosition(tabIndex,0f,true);
viewPager.setCurrentItem(tabIndex);
1
Alex Jolig

Ceci est ma configuration. fonctionne bien pour moi.

      //declare your tabs to be add on
        TabLayout tlDailyView;
        private TabLayout.Tab tabAppointment, tabSlots;


    @Nullable
        @Override
        public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, Bundle savedInstanceState) {
            View view = inflater.inflate(R.layout.fragment_daily_view, container, false);
            initializeMembers();
            setupTabLayout();
            return view;
        }


    private void setupTabLayout() {
            tlDailyView.addTab(tabAppointment, 0, true);
            tlDailyView.addTab(tabSlots, 1, true);
            tlDailyView.addOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
                @Override
                public void onTabSelected(TabLayout.Tab tab) {

                    switch (tab.getPosition()) {
                        case 0:
                        //open fragment at position 0 here
                        case 1:
                        //open fragment at position 1 here
                            break;
                    }

                }

                @Override
                public void onTabUnselected(TabLayout.Tab tab) {

                }

                @Override
                public void onTabReselected(TabLayout.Tab tab) {

                }
            });
        }

 private void initializeMembers() {
        tabSlots = tlDailyView.newTab();
        tabAppointment = tlDailyView.newTab();
        tabAppointment.setText(R.string.tab_appts).select();
        tabSlots.setText(R.string.tab_slots);
    }

n'oubliez pas d'initialiser la disposition de vos onglets ci-dessus.

0
vikas kumar
tabLayout.getTabAt(index specific).select();
0
Meysam Keshvari

Vous pouvez sélectionner l'onglet dans Fragment.onViewCreated().

0
Nimo