使用viewpager设置时,禁用单击tablayout

时间:2017-09-25 11:12:01

标签: java android android-viewpager android-tablayout

我有一个带有一些图标的ViewPager(3项)。当在第一个项目上,选择图标时,可以滑动到下一个项目。等等。选择第二个图标后,有可能转到viewpager的第三项。 我有一个页面指示器(点),它通过setupWithViewPager与ViewPager连接。 问题是我想将tablayout上的clickable设置为false,如果选择了viewPager上的图标,则解锁步骤。现在所有“点”都是可点击的,我可以转到ViewPager的所有项目。

我只能在OnPageSelected函数中使用TabLayout进行操作... 我怎样才能改变它?

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    View rootView = inflater.inflate(R.layout.fragment_photo_wizard, container, false);

    findViews(rootView);

    setOnClickListeners();
    buildTypeFragmentPagerAdapter = new BuildTypeFragmentPagerAdapter(getChildFragmentManager(), state);


    buildTypeViewPager.addOnPageChangeListener(new PageListenerAdapter() {
        public void onPageSelected(int position) {
            state.moveToPage(position);
            refreshViewState(false);
        }
    });

    dotsView.setupWithViewPager(buildTypeViewPager);


    return rootView;
}

我可以为dotsView设置clickable为false,但它不起作用......

2 个答案:

答案 0 :(得分:0)

尝试使用api> 24:

tabLayout.clearOnTabSelectedListeners();

或< 24:

tabLayout.setupWithViewPager(viewPager);

LinearLayout tabStrip = ((LinearLayout)tabLayout.getChildAt(0));
for(int i = 0; i < tabStrip.getChildCount(); i++) {
    tabStrip.getChildAt(i).setOnTouchListener(new    View.OnTouchListener() {
        @Override
        public boolean onTouch(View v, MotionEvent event) {
            return true;
        }
    });
}

答案 1 :(得分:0)

您可以扩展TabLayout类并覆盖方法“ setupWithViewPager”。您需要调用super方法来填充选项卡。然后,这将与选项卡一起迭代并禁用点击:

@Override
public void setupWithViewPager(@Nullable ViewPager viewPager) {
    super.setupWithViewPager(viewPager);

    for (int i = 0; i < getTabCount(); i++) {
        Tab tab = getTabAt(i);
        if (tab != null) {
            tab.view.setClickable(false);
        }
    }
}