【Android UI设计与开发】5.底部菜单栏(二)使用Fragment实现底部菜单栏
既然 Fragment 取代了TabActivity,当然 TabActivity 的能实现的菜单栏,Fragment 当然也能实现。主要其实就是通过菜单栏的点击事件切换 Fragment 的显示和隐藏。
来看看栗子吧:
1.效果图来了:
2.代码具体实现
2.1 自定义底部菜单栏实现方式
(1)对应的 Fragment 编辑代码和布局实现在前面的 Fragment介绍和简单实现 中已经有提及,代码中没复杂的地方,此处略过,具体可看实例代码。
(2)菜单栏实现,这里使用代码实现的,其实也可以用布局文件实现,代码如下:
![](https://i-blog.csdnimg.cn/blog_migrate/cdec0645add3fc3c328197dda5c76203.gif)
(3)最后就是主界面代码,切换 Fragment 的显示和隐藏以及菜单栏的选中状态
package com.yanis.yc_ui_fragment_menu; import com.yanis.yc_ui_fragment_menu.ViewIndicator.OnIndicateListener; import android.os.Bundle; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentActivity; import android.view.View; public class MainActivity extends FragmentActivity { public static Fragment[] mFragments; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); setFragmentIndicator(0); } /** * 初始化fragment */ private void setFragmentIndicator(int whichIsDefault) { //实例化 Fragment 集合 mFragments = new Fragment[5]; mFragments[0] = getSupportFragmentManager().findFragmentById(R.id.fragment_home); mFragments[1] = getSupportFragmentManager().findFragmentById(R.id.fragment_category); mFragments[2] = getSupportFragmentManager().findFragmentById(R.id.fragment_down); mFragments[3] = getSupportFragmentManager().findFragmentById(R.id.fragment_user); mFragments[4] = getSupportFragmentManager().findFragmentById(R.id.fragment_setting); //显示默认的Fragment getSupportFragmentManager().beginTransaction().hide(mFragments[0]) .hide(mFragments[1]).hide(mFragments[2]).hide(mFragments[3]).hide(mFragments[4]).show(mFragments[whichIsDefault]).commit(); //绑定自定义的菜单栏组件 ViewIndicator mIndicator = (ViewIndicator) findViewById(R.id.indicator); ViewIndicator.setIndicator(whichIsDefault); mIndicator.setOnIndi