6

私のアプリでは最新のデザインサポートライブラリのTabLayoutを使用しました。タブは、各タブのフラグメントをロードするビューページャに添付されます。私はviewpagerがユーザが選択したタブのフラグメントをロードするまで、すべてのタブを無効にしたい。私はtablayoutを無効にしたり、クリックできないようにすることはできません。 setEnabled(false)setClickable(false)を使用しましたが、動作しません。私はsetVisiblity(View.GONE)を使用して見えなくすることができますが、タブを常に表示したいと考えています。TabLayoutのタブを無効にする

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); 

XML

android.support.design.widget.TabLayout
アンドロイド:ID = "@ + ID/tabLayout" アンドロイド:layout_width = "match_parent"
アンドロイド: layout_height = "0dp"
android:layout_weight = "0.15"
android:scrollbars = "horizo​​ntal"
アンドロイド:=「false」をsplitMotionEvents>

 @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(ある)があるが、あなたのフラグメントが初期化されるかどうかを確認するために、ブール条件を置きます。次に、その条件が満たされた場合は、トランザクションを許可します。 はまた、あなたのフラグメントのコードの後に​​タブを初期化

+1

サンプルコードを提供できますか? –

+0

あなたがこれまでに試したことを投稿できます –

+0

私はすでに使ったコードを投稿しました。 –

-2

あなたはTabLayout上の一つのタブボタンを無効にすることを意味している場合、このコードを試してみてください。

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

tabhostは私が使っていたtablayoutと異なっていませんか? –

+0

問題があれば試してみることができます。 –

+0

私はデザインサポートライブラリのtabhostとtablayoutは全く違うと思います。だから私はこの方法を使用することはできません。 –

3

別のトリック:

あなたは別の空白透視図を置くことができます要件が満たされるまでtablayoutで。タブを有効/表示する必要があるときは、空白の表示を非表示にするだけです。

関連する問題