2016-06-23 4 views
0

Ich habe ein tablayout, viewpager mit 4 Fragmenten. Ich habe die Bottombar in meiner MainActivity hinzugefügt, sodass alle Fragmente angezeigt werden. Ich möchte nur im ersten Fragment die untere Leiste. Wie Bottombar für andere 3 Fragmente zu verbergen?Ich habe tablayout mit viewpager, wie man Bottombar in 4 Fragmenten außer dem ersten Fragment versteckt?

Dies ist MainActivity:

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    //setHasOptionsMenu(true); 

    bottombar = BottomBar.attach(MainActivity.this,savedInstanceState); 
    bottombar.setItemsFromMenu(R.menu.bottom_bar_menu, new OnMenuTabSelectedListener() { 
     @Override 
     public void onMenuItemSelected(int itemId) { 
      switch (itemId) { 
       case R.id.about_us: 
        About_Us about_us = new About_Us(); 
        Intent intent = new Intent(MainActivity.this,About_Us.class); 
        startActivity(intent); 
        break; 
       case R.id.contact_us: 
        SquareFragment squareFragment = new SquareFragment(); 
        getSupportFragmentManager().beginTransaction().replace(R.id.frame,squareFragment).commit(); 
        //squareFragment.updateColor(Color.parseColor(colors[1])); 
        break; 
       //Toast.makeText(MainActivity.this,"selected contact_us",Toast.LENGTH_SHORT).show(); 
       case R.id.donate_us: 
        donate_us_Fragment donate_us_fragment = new donate_us_Fragment(); 
        getSupportFragmentManager().beginTransaction().replace(R.id.frame,donate_us_fragment).commit(); 
        //Toast.makeText(MainActivity.this,"selected donate_us",Toast.LENGTH_SHORT).show(); 
        break; 
      } 
     } 
    }); 
    bottombar.setActiveTabColor("#C2185B"); 

    //Initializing the tablayout 
    tabLayout = (TabLayout) findViewById(R.id.tabLayout); 
    //Adding the tabs using addTab() method 
    tabLayout.addTab(tabLayout.newTab().setText("Home").setIcon(R.drawable.home_selector)); 

    tabLayout.addTab(tabLayout.newTab().setText("News").setIcon(R.drawable.news_selector)); 
    tabLayout.addTab(tabLayout.newTab().setText("Videos").setIcon(R.drawable.video_selector)); 
    tabLayout.addTab(tabLayout.newTab().setText("PodCasts").setIcon(R.drawable.podcast_selector)); 
    tabLayout.addTab(tabLayout.newTab().setText("More").setIcon(R.drawable.more_selector)); 
    tabLayout.setTabGravity(TabLayout.GRAVITY_FILL); 
    //tabLayout.setupWithViewPager(viewPager); 

    //Initializing viewPager 
    viewPager = (ViewPager) findViewById(R.id.pager); 

    //Creating our pager adapter 
    ViewPagerAdapter adapter = new ViewPagerAdapter(getSupportFragmentManager(), tabLayout.getTabCount()); 

    //Adding adapter to pager 
    viewPager.setAdapter(adapter); 

    viewPager.addOnPageChangeListener(new TabLayout.TabLayoutOnPageChangeListener(tabLayout)); 

    tabLayout.setOnTabSelectedListener(new TabLayout.ViewPagerOnTabSelectedListener(viewPager) { 
     @Override 
     public void onTabSelected(TabLayout.Tab tab) { 
      super.onTabSelected(tab); 
} 

} 

Dies ist ViewPagerAdapter:

public class ViewPagerAdapter extends FragmentStatePagerAdapter { 

//integer to count number of tabs 
int tabCount; 
BottomBar bottombar; 

//Constructor to the class 
public ViewPagerAdapter(FragmentManager fm, int tabCount) { 
    super(fm); 
    //Initializing tab count 
    this.tabCount = tabCount; 
} 

//Overriding method getItem 
@Override 
public Fragment getItem(int position) { 

    //Returning the current tabs 
    switch (position) { 
     case 0: 
      return new Home_Fragment(); 
     case 1: 
      News_Fragment news_fragment = new News_Fragment(); 
      bottombar.hide(); 
      return news_fragment; 
     case 2: 
     Video_Fragment video_fragment = new Video_Fragment(); 
      return video_fragment; 

     case 3: 
      return new PodCasts_Fragment(); 
     case 4: 
      return new More_Fragment(); 
    } 
    return null; 
} 

//Overriden method getCount to get the number of tabs 
@Override 
public int getCount() { 
    return tabCount; 
} 

dieses Bild unten:

enter image description here

+0

seine sehr einfache Einstellung layout_weight = 1 Fragment Behälter und eingestellt unteren gegangenes Layout Sicht beim Wählen anderen 3 tabs –

Antwort

0

versuchen, dieses:

public void onTabSelected(TabLayout.Tab tab) { 
    if(tab.getPosition == 0) 
    bottomBar.hide(); 
    super.onTabSelected(tab); 
} 

Und die

bottomBar.hide(); 

vom getItem() im Fragment entfernen.

+0

@Override public Fragment getItem (int position) { // Rückgabe der aktuellen Registerkarten switch (position) { Fall 0: return new Home_Fragment(); Fall 1: News_Fragment news_fragment = new News_Fragment(); zurückgeben news_fragment; Fall 2: Video_Fragment video_fragment = new Video_Fragment(); Rückgabe video_fragment; } Rückgabewert null; } –

+0

im Fall 0: füge die Anweisung hinzu, um den Balken auszublenden, bevor das neue Fragment zurückgegeben wird –

+0

Ich habe bottombar.hide() hinzugefügt; Methode im Fall 0: aber erhalten NullpointerException –

0

ist das richtige Code

viewPager.addOnPageChangeListener(new TabLayout.TabLayoutOnPageChangeListener(tabLayout)); 

    tabLayout.setOnTabSelectedListener(new TabLayout.ViewPagerOnTabSelectedListener(viewPager) { 
     @Override 
     public void onTabSelected(TabLayout.Tab tab) { 

      if(tab.getPosition() == 0){ 
       bottombar.show(); 
      }else 
      if(tab.getPosition() == 1){ 
       bottombar.hide(); 
      }else 
      if(tab.getPosition() == 2){ 
       bottombar.hide(); 
      }else 
      if(tab.getPosition() == 3){ 
       bottombar.hide(); 
      } 
      super.onTabSelected(tab); 
     } 
     @Override 
     public void onTabUnselected(TabLayout.Tab tab) { 
      super.onTabUnselected(tab); 
      //tab.getIcon().setAlpha(127); 
     } 
    }); 
} 

}
+0

das ist der richtige Code –

Verwandte Themen