Изменить поведение при выборе вкладки в TabLayout - PullRequest
0 голосов
/ 26 апреля 2018

У меня есть базовый TabLayout, который имеет 2 списка под 2 вкладками (1 список на вкладке A и 1 список на вкладке B), настроенный с помощью ViewPager, как показано ниже.

// CustomPagerAdapter extends PagerAdapter
CustomPagerAdapter adapter = new CustomPagerAdapter(getFragmentManager());
adapter.addFragments();
TabLayout tabLayout = findViewById(R.id.tab_layout);
ViewPager viewPager = findViewById(R.id.view_pager);
viewPager.setAdapter(PagerAdapter);
tabLayout.setupWithViewPager(viewPager);

Данная ситуация такова, чтопользователь видит вкладку A на экране.В этот момент, когда пользователь нажимает на вкладку B, я хочу, чтобы приложение отправляло всплывающее сообщение о невозможности просмотра вкладки B вместо фактической навигации по вкладке B.

Другими словами,Я не хочу, чтобы приложение переходило на вкладку B, я просто хочу, чтобы оно отображало сообщение Toast, оставаясь на вкладке A, когда пользователь нажимает на вкладку B.

Я пробовал что-то вроде ((LinearLayout) tabLayout.getChildAt(0)).setEnabled(false);, но этоне работал, потому что вкладка отключена приведенным выше кодом, поэтому он даже не отображает сообщение Toast, потому что не воспринимает событие щелчка.

Мне кажется, что мне нужно оставить его включенным (setEnabled (true) или что-то в этом роде) и каким-то образом переопределить метод, чтобы приложение отображало сообщение Toast вместо перехода на другую вкладку.

Как этого добиться?Я не смог найти ни одного другого сообщения, связанного с этой проблемой.

Пожалуйста, помогите!

Ответы [ 2 ]

0 голосов
/ 26 апреля 2018

Используйте этот код для включения / выключения любой вкладки в tablayout:

LinearLayout tabStrip = ((LinearLayout)tabLayout.getChildAt(0));
            tabStrip.getChildAt(1).setOnTouchListener(new View.OnTouchListener() {
                @Override
                public boolean onTouch(View v, MotionEvent event) {

                     if(your condition) {
                    Toast.makeText(getActivity(), "Tab Enable", Toast.LENGTH_SHORT).show();
                    return false;
                    } else {                   
                    Toast.makeText(getActivity(), "Tab Disable", Toast.LENGTH_SHORT).show();
                    return true;
                     }
                }
            });
0 голосов
/ 26 апреля 2018

Попробуйте добавить слушателя к табло, как показано ниже

tabLayout.addOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
            @Override
            public void onTabSelected(TabLayout.Tab tab) {

            }

            @Override
            public void onTabUnselected(TabLayout.Tab tab) {
                tab.select();
                Toast.makeText(getContext(), "This is toast", Toast.LENGTH_SHORT).show();
            }

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

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