2017-01-05 6 views
0

Здесь у меня есть TabLayout и внутри, что у меня есть ViewPager, где находятся 4 вкладки, и все вкладки являются статическими. Мне понадобилось пустое место в центре TabLayout, поэтому я добавил еще одну вкладку в TabLayout, теперь я хочу ее отключить, она не должна быть нажата, нажмите или выберите селектор, чтобы не попасть на эту конкретную вкладку, поскольку она отображается на изображении какДинамически отключить click/swipe/tap одной вкладки в Android TabLayout

enter image description here

Я добавляю пользовательский вид этой вкладки как

for (int i = 0; i < mPagerAdapter.getCount(); i++) { 
     View customView = mPagerAdapter.getCustomeView(getActivity(), i); 
     mTabLayout.getTabAt(i).setCustomView(customView); 
    } 

Я попытался отключить щелчки и т.д. на этой вкладке

LinearLayout tabStrip = ((LinearLayout)tabLayout.getChildAt(2)); 
tabStrip.setEnabled(false); 

но это не сработало для меня. Может ли кто-нибудь дать мне правильный путь для решения этой проблемы?

+0

он уже ответил здесь: http://stackoverflow.com/questions/31702725/disable-tablayout/35123042#35123042 – netpork

+0

, но у меня нет условий, чтобы полностью блокировать расположение вкладок –

ответ

0

попробовать это:

tabLayout.setupWithViewPager(customViewPager); 
customViewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() { 
    @Override 
    public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { 
    } 

    @Override 
    public void onPageSelected(int position) { 
     for (int i = 0; i <tabLayout.getTabCount(); i++){ 
      updateTab(tabLayout.getTabAt(i), position == i); 
     } 
    } 

    @Override 
    public void onPageScrollStateChanged(int state) { 
    } 
}); 



private void updateTab(TabLayout.Tab tab, boolean isSelected){ 
    Method method = null; 
    try { 
     method = TabLayout.Tab.class.getDeclaredMethod("getCustomView", null); 
     method.setAccessible(true); 

     View tabview = (View) method.invoke(tab, null); 
     //disable tabview here for specific tab 
    } 

     tab.setCustomView(tabview); 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
}