众所周知,android的底部菜单栏太重要,平时项目一般都是需要用到的,但是网上关于这方面的demo做得太丑了,实在惨不忍睹,所以这里便用RadioGroup+Fragment的方式写了一个,顺便美化了一下,需要的可以看下。

效果图:

项目结构

MainActivity.java

public class MainActivity extends AppCompatActivity {   private FrameLayout frameLayout;  private RadioGroup radioGroup;  private Fragment[] mFragments;  private int mIndex;    @Override  protected void onCreate(Bundle savedInstanceState) {    super.onCreate(savedInstanceState);    setContentView(R.layout.activity_main);    initFragment();    setRadioGroupListener();    }   private void initFragment() {    radioGroup = (RadioGroup) findViewById(R.id.radioGroup);    frameLayout = (FrameLayout) findViewById(R.id.fl_content);    HomeFragment homeFragment = new HomeFragment();    ShopFragment shopFragment = new ShopFragment();    LiveFragment liveFragment = new LiveFragment();    ShoppingCarFragment shoppingCarFragment = new ShoppingCarFragment();    MineFragment mineFragment = new MineFragment();    //添加到数组    mFragments = new Fragment[]{homeFragment, shopFragment, liveFragment, shoppingCarFragment, mineFragment};    //开启事务    FragmentTransaction ft = getSupportFragmentManager().beginTransaction();    //添加首页    ft.add(R.id.fl_content, homeFragment).commit();    //默认设置为第0个    setIndexSelected(0);  }   private void setIndexSelected(int index) {    if (mIndex == index) {      return;    }    FragmentManager fragmentManager = getSupportFragmentManager();    FragmentTransaction ft = fragmentManager.beginTransaction();    //隐藏    ft.hide(mFragments[mIndex]);    //判断是否添加    if (!mFragments[index].isAdded()) {      ft.add(R.id.fl_content, mFragments[index]).show(mFragments[index]);    } else {      ft.show(mFragments[index]);    }    ft.commit();    //再次赋值    mIndex = index;   }   private void setRadioGroupListener() {    radioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {      @Override      public void onCheckedChanged(RadioGroup radioGroup, int i) {        switch (i) {          case R.id.rb_home:            setIndexSelected(0);            break;          case R.id.rb_shop:            setIndexSelected(1);            break;          case R.id.rb_live:            setIndexSelected(2);            break;          case R.id.rb_shopping_car:            setIndexSelected(3);            break;          case R.id.rb_mine:            setIndexSelected(4);            break;          default:            setIndexSelected(0);            break;        }      }    });  }   @Override  public boolean onKeyDown(int keyCode, KeyEvent event) {    if (keyCode == KeyEvent.KEYCODE_BACK) {      //仅当activity为task根(即首个启动activity)时才生效,这个方法不会改变task中的activity状态,      // 按下返回键的作用跟按下HOME效果一样;重新点击应用还是回到应用退出前的状态;      moveTaskToBack(false);      return true;    }    return super.onKeyDown(keyCode, event);  }}

Fragment,这里只列出HomeFragment的,其他都是一样

public class HomeFragment extends BaseFragment {   public HomeFragment() {  }    @Override  public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {    View view=inflater.inflate(R.layout.fragment_home,container,false);    return view;  }  }

activity_main.xml布局文件

<?xml version="1.0" encoding="utf-8"?>                                      

RadioButton的样式

Demo下载地址:底部菜单栏

温馨提示:以后我自己写的demo都是用Android Studio写的了,用Eclipse的同学要的话需要自己改一下,时代在进步,工具也在升级!

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

更多相关文章

  1. 升级Android(安卓)Studio3.0遇到Unable to resolve dependency f
  2. Android(安卓)4.0为Launcher主界面所有应用程序图标添加统一背景
  3. Android(安卓)P Vold分析 VolumeBase::create()中的setState(Sta
  4. Android(安卓)实现轮播图效果(三) 底部圆点状态改变
  5. Android(安卓)自定义控件☞添加attr属性
  6. Android中 一些维持状态的经验
  7. Android游戏开发系统控件-Dialog
  8. cocos2dx 玩转震动
  9. Android(安卓)开发

随机推荐

  1. Android(安卓)OpenGL射线拾取&手势旋转(二
  2. Android(安卓)基础Action
  3. android实现文件下载功能
  4. Android布局之LinearLayout与RelativeLay
  5. Android 滑动效果高级篇(七)—— 华丽翻页
  6. Android五大布局(一)LinearLayout.FrameLay
  7. Android(安卓)UI开发第五篇――自定义列
  8. Android 无须获取Root权限静默安装App
  9. Android 操作SQLite数据库之一
  10. Android沉浸式标题栏状态栏字体颜色修改(