kevinjqy 2014-11-03 05:21 采纳率: 0%
浏览 2861

用tabhost+tabwidget+fragment实现的底部菜单栏,打开某些fragment时隐藏菜单栏

在某些fragment中不想让底部菜单栏显示出来,怎么改?以下是实现的源码
private void initView() {
// TODO Auto-generated method stub
//实例化布局对象

layoutInflater = LayoutInflater.from(this);

    //实例化TabHost对象,得到TabHost  
    mTabHost = (FragmentTabHost)findViewById(android.R.id.tabhost);  
    mTabHost.setup(this, getSupportFragmentManager(), R.id.realtabcontent);   

    //得到fragment的个数  
    int count = fragmentArray.length;     

    for(int i = 0; i < count; i++){    
        //为每一个Tab按钮设置图标、文字和内容  
        TabSpec tabSpec = mTabHost.newTabSpec(mTextviewArray[i]).setIndicator(getTabItemView(i));  
        //将Tab按钮添加进Tab选项卡中  
        mTabHost.addTab(tabSpec, fragmentArray[i], null);  
        //设置Tab按钮的背景  
        mTabHost.getTabWidget().getChildAt(i).setBackgroundResource(R.drawable.selector_tab_background);  
    } 
}


 private View getTabItemView(int index){  
        View view = layoutInflater.inflate(R.layout.tab_item_view, null);  

        ImageView imageView = (ImageView) view.findViewById(R.id.imageview);  
        imageView.setImageResource(mImageViewArray[index]);  

        TextView textView = (TextView) view.findViewById(R.id.textview);          
        textView.setText(mTextviewArray[index]);  

        return view; 
    } 
  • 写回答

1条回答 默认 最新

  • 你知我知皆知 2024-08-03 00:45
    关注

    以下回答参考 皆我百晓生券券喵儿 等免费微信小程序相关内容作答,并由本人整理回复。

    要实现底部菜单栏根据某个特定条件(比如当前的Fragment)隐藏或显示的功能,你可以在onCreate()方法中检查当前的Fragment,并相应地修改底部菜单栏的状态。以下是一个示例:

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    
        FragmentManager fragmentManager = getSupportFragmentManager();
        FragmentTransaction transaction = fragmentManager.beginTransaction();
    
        if (fragmentManager.findFragmentById(R.id.fragment_container) == null) { // 如果没有找到指定的Fragment
            transaction.add(R.id.fragment_container, new MyFirstFragment()).commit(); // 添加新的Fragment
        }
    
        if (fragmentManager.findFragmentById(R.id.fragment_container) != null && !((MyFirstFragment) fragmentManager.findFragmentById(R.id.fragment_container)).isShowBottomBar()) { // 如果存在且不是showBottomBar()
            transaction.hide(fragmentManager.findFragmentById(R.id.fragment_container)).commit(); // 隐藏指定的Fragment
        }
    }
    

    在这个例子中,我们首先检查是否有匹配的Fragment,如果没有,则创建一个新的并将其添加到容器中。然后,我们再次检查是否找到了匹配的Fragment,如果找到了但不是showBottomBar()状态,则将这个Fragment隐藏。

    注意:这段代码假设你的Activity有一个id为R.id.fragment_container的视图容器,其中包含一个名为MyFirstFragment的Fragment。你需要根据实际情况调整这些值。

    此外,这段代码只适用于Android 6.0及以上版本,因为只有在这些版本上才能正确使用FragmentManagerFragmentTransaction来动态管理Fragments。如果你使用的是旧版本的Android系统,可能需要使用其他方式来模拟类似功能。

    评论

报告相同问题?