6

में टैब अक्षम करें मैंने अपने ऐप में नवीनतम डिज़ाइन समर्थन लाइब्रेरी से TabLayout का उपयोग किया है। टैब एक व्यूअर से जुड़े होते हैं जो प्रत्येक टैब के लिए टुकड़े लोड करता है। मैं सभी टैब अक्षम करना चाहता हूं जब तक कि व्यूअर उपयोगकर्ता चयनित टैब के लिए टुकड़ा लोड न करे। मैं tablayout को अक्षम करने या इसे गैर-क्लिक करने योग्य बनाने में सक्षम नहीं हूं। मैंने setEnabled(false) और setClickable(false) का उपयोग किया था लेकिन यह काम नहीं कर रहा है। मैं setVisiblity(View.GONE) का उपयोग करके इसे अदृश्य बना सकता हूं लेकिन मैं चाहता हूं कि टैब हर समय दिखाई दे।टैबलेआउट

tabLayout = (TabLayout) findViewById(R.id.tabLayout); 
    tabLayout.setTabGravity(TabLayout.GRAVITY_FILL); 
    tabLayout.setTabMode(TabLayout.MODE_FIXED); 
    tabLayout.addTab(tabLayout.newTab().setIcon(R.drawable.near_me_hover).setTag(1)); 
    tabLayout.addTab(tabLayout.newTab().setIcon(R.drawable.all_hostels).setTag(2)); 
    tabLayout.addTab(tabLayout.newTab().setIcon(R.drawable.top_five).setTag(3)); 
    tabLayout.addTab(tabLayout.newTab().setIcon(R.drawable.advanced_search).setTag(4)); 
    tabLayout.setEnabled(false); 
    tabLayout.setClickable(false); 

एक्सएमएल

android.support.design.widget.TabLayout
एंड्रॉयड: आईडी = "@ + id/tabLayout" एंड्रॉयड: layout_width = "match_parent"
एंड्रॉयड: layout_height = "0dp"
एंड्रॉइड: लेआउट_वेट = "0.15"
एंड्रॉइड: scrollbars = "क्षैतिज"
एंड्रॉयड: splitMotionEvents = "false">

 @Override 
     public void onTabSelected(TabLayout.Tab tab) { 
      switch (tab.getPosition()) { 
       case 0: 
        viewPager.setCurrentItem(tab.getPosition()); 
        tab.setIcon(R.drawable.near_me_hover); 
        break; 
       case 1: 
        viewPager.setCurrentItem(tab.getPosition()); 
        tab.setIcon(R.drawable.all_hostels_hover); 
        break; 
       case 2: 
        viewPager.setCurrentItem(tab.getPosition()); 
        tab.setIcon(R.drawable.top_five_hover); 
        break; 
       case 3: 
        viewPager.setCurrentItem(tab.getPosition()); 
        tab.setIcon(R.drawable.advanced_search_hover); 
        break; 
      } 
     } 

     @Override 
     public void onTabUnselected(TabLayout.Tab tab) { 
      switch (tab.getPosition()) { 
       case 0: 
        tab.setIcon(R.drawable.near_me); 
        break; 
       case 1: 
        tab.setIcon(R.drawable.all_hostels); 
        break; 
       case 2: 
        tab.setIcon(R.drawable.top_five); 
        break; 
       case 3: 
        tab.setIcon(R.drawable.advanced_search); 

        break; 
      } 

     } 

     @Override 
     public void onTabReselected(TabLayout.Tab tab) { 
     } 
    }); 
    viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() { 
     @Override 
     public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { 
     } 

     @Override 
     public void onPageSelected(int position) { 
      tabLayout.getTabAt(position).select(); 
     } 

     @Override 
     public void onPageScrollStateChanged(int state) { 

     } 
    }); 

उत्तर

0

वहाँ 3 तरीकों टैब क्लिक श्रोता द्वारा कार्यान्वित कर रहे हैं, उनमें से एक onTabSelected है() अगर आपके टुकड़ा initialised है की जाँच करने के एक बूलियन हालत डाल दिया। फिर यदि वह स्थिति संतुष्ट है तो लेनदेन की अनुमति दें। इसके अलावा अपने टुकड़ा कोड के बाद टैब प्रारंभ

+1

क्या आप कोई नमूना कोड प्रदान कर सकते हैं? –

+0

क्या आपने अभी तक जो भी प्रयास किया है, उसे पोस्ट कर सकते हैं –

+0

मैंने कोड पोस्ट किया है जिसे मैंने पहले ही इस्तेमाल किया था। –

-2

आप TabLayout पर एक टैब बटन को निष्क्रिय करने का मतलब है, तो इस कोड का प्रयास करें:

tabHost.getTabWidget().getChildTabViewAt(your_index).setEnabled(false); 
+2

टैबबॉस्ट से अलग नहीं है जिसे मैंने उपयोग किया था? –

+0

यदि आप कोई समस्या रखते हैं तो आप कोशिश कर सकते हैं तो मुझे बताएं कि मैं इसे देख लूंगा। –

+0

मुझे लगता है कि डिज़ाइन समर्थन लाइब्रेरी से टैबहोस्ट और टैबलेटआउट पूरी तरह अलग हैं। तो मैं इस विधि का उपयोग नहीं कर सकता। –

3

एक और चाल:

आप किसी अन्य खाली पारदर्शी दृश्य डाल सकते हैं आपकी आवश्यकता पूरी होने तक tablayout पर। जब आपको टैब को सक्षम/दिखाने की आवश्यकता होती है तो बस खाली दृश्य छुपाएं।

संबंधित मुद्दे