2017-09-02 15 views
2

コントロールを使用してI android.support.design.widget.TabLayoutTabLayoutを使用するときに、いくつかのタブを選択しないようにするには?

私は4つのタブがある - 私はいくつかのViewPagerを表示する各タブを - (異なるviewPagerを表示するフラグメントを使用して)

私はすべて無効にしたいですユーザーが最初のタブに存在するいくつかのデータを追加するまで、タブをクリックします。

タブを無効にする方法はありません。

コード:

<android.support.design.widget.TabLayout 
     android:id="@+id/tabs" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:background="?android:attr/detailsElementBackground" 
     android:clickable="true" 
     app:tabGravity="center" 
     app:tabMode="scrollable" 
     app:tabTextAppearance="@style/MineCustomTabText" /> 

    <android.support.v4.view.ViewPager 
     android:id="@+id/viewpager" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     app:layout_behavior="@string/appbar_scrolling_view_behavior" /> 

</android.support.design.widget.AppBarLayout> 


ViewPagerAdapter adapter = new ViewPagerAdapter(getSupportFragmentManager()); 


    adapter.addFragment(new Fragment1(), "Fragment1"); 
    adapter.addFragment(new Fragment2(), "Fragment2"); 
    adapter.addFragment(new Fragment3(), "Fragment3"); 
    adapter.addFragment(new Fragment4(), "Fragment4"); 

//ユーザーがFragment1

答えて

1

上に存在するいくつかの文字列を追加しますまでFragment2 & Fragment3 & Fragment4を無効にする必要があり、これを試してみてください:

LinearLayout tabStrip = ((LinearLayout)mTabLayout.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; 
     } 
    }); 
} 

リファレンス:Disable TabLayout

+0

申し訳ありません...全く動作しません。 – Yanshof

1

TabLayoutのonTabSelectedを処理する場合は、これを行い、そのフラグメントを表示することが許可されているかどうかを確認できます。

tab_layout.addOnTabSelectedListener(new TabLayout.OnTabSelectedListener() { 
      override onTabReselected(TabLayout.Tab tab) {} 
      override onTabUnselected(TabLayout.Tab tab) {} 
      override onTabSelected(TabLayout.Tab tab) { 
       if(... is not disabled) 
       pager.currentItem = tab.position 
      } 

     }) 
関連する問題