简体   繁体   English

我在viewpager中有布局,如何在第一个片段以外的4个片段中隐藏Bottombar?

[英]I have tablayout with viewpager how to hide Bottombar in 4 Fragments except first Fragment?

I have a tablayout, viewpager with 4 fragments. 我有一个布局,有4个片段的viewpager。 I added bottombar in my MainActivity so it was showing all fragments. 我在MainActivity中添加了bottombar,以便显示所有片段。 I just want bottombar only in first fragment. 我只希望底线仅在第一个片段中。 How to hide bottombar for other 3 fragments? 如何隐藏其他3个片段的底线?

This is MainActivity: 这是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);
 }

 }

This is ViewPagerAdapter: 这是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;
}

See this image below: 参见下面的图片:

在此处输入图片说明

try this: 尝试这个:

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

And remove the 并删除

bottomBar.hide();

from the getItem() in the fragment. 来自片段中的getItem()

this is correct 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);
        }
    });
}

} }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 从第二个Fragment的recyclerView中选择项目时如何切换到第一个Fragment? 两个片段都在带有 viewPager2 的 tablayout 中 - How to switch to the first fragment when selecting an item from the recyclerView of second Fragment? Both fragments are in tablayout with viewPager2 使用 TabLayout 和 ViewPager 的片段 - Fragments with TabLayout and ViewPager 我有一个相同片段的 ViewPager RecyclerView 只是在 ViewPager 的一个片段中加载项目 - I have a ViewPager by same fragments RecyclerView just load items in one fragment of ViewPager 当在TabLayout中调用其他片段时,第一个片段出现第二秒钟 - First fragment appears for a second when other fragments are called in tablayout 如何在ViewPager中隐藏和显示带有碎片的FloatingActionButton? - How to hide and show FloatingActionButton with Fragments in a ViewPager? 选择不同的选项卡时如何在 ViewPager + TabLayout 中暂停片段? - How to pause a fragment in ViewPager + TabLayout when a different tab is selected? 如何使用TabLayout在ViewPager中的Google Maps Fragment中获取当前位置 - How to get current location within a Google Maps Fragment in a ViewPager with TabLayout 如何在 ViewPager 和 TabLayout 中多次使用相同的 Fragment 类? - How to use same Fragment class multiple times in a ViewPager and TabLayout? 如何让 TabLayout 更改两个单独的 ViewPagers(由片段组成)的内容? - How do I have a TabLayout change the content of two separate ViewPagers (which consists of fragments)? 具有TabLayout的Android ViewPager片段行为异常 - Android ViewPager Fragments With TabLayout Acting unexpectedly
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM