我有一个带有一些图标的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,但它不起作用......
答案 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);
}
}
}