在我们的项目中,基本上都会用到底部菜单栏,通过点击不同的底部菜单导航到不同的Fragment,布局采用的是RadioButton+Fragment,先看与一下效果(如下图)

因为手机没有录屏,所有不能展示效果,但总算是实现了

代码也很简单,还不到百行,废话少说,上代码和详细的步骤

(1)第一步:UI布局,底层一个Radiogroup和四个RadioButton,中间一个Fragment布局,radiobutton的样式我新建了一个style,代码也会在以下给出

<RelativeLayoutxmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:id="@+id/activity_main"android:layout_width="match_parent"android:layout_height="match_parent"tools:context="com.example.administrator.mytest.activity.MainActivity"><FrameLayoutandroid:id="@+id/fragment"android:layout_width="match_parent"android:layout_height="match_parent"android:layout_marginBottom="60dp"></FrameLayout><Viewandroid:layout_width="match_parent"android:layout_height="1dp"android:layout_above="@+id/ll_main_radio"android:background="@color/main_rb_bg"/><LinearLayoutandroid:id="@+id/ll_main_radio"android:layout_width="match_parent"android:layout_height="60dp"android:layout_alignParentBottom="true"android:paddingTop="5dp"><RadioGroupandroid:id="@+id/rg_main"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="horizontal"><RadioButtonandroid:id="@+id/rb_main"style="@style/rb_style"android:checked="true"android:drawableTop="@drawable/rb_main_bg"android:text="@string/rb_main"/><RadioButtonandroid:id="@+id/rb_message"style="@style/rb_style"android:drawableTop="@drawable/rb_message_bg"android:text="@string/rb_message"/><RadioButtonandroid:id="@+id/rb_find"style="@style/rb_style"android:drawableTop="@drawable/rb_dynamic_bg"android:text="@string/rb_find"/><RadioButtonandroid:id="@+id/rb_my"style="@style/rb_style"android:drawableTop="@drawable/rb_my_bg"android:text="@string/rb_my"/></RadioGroup></LinearLayout></RelativeLayout>
<style name="rb_style"><item name="android:layout_width">0dp</item><item name="android:layout_weight">1</item><item name="android:gravity">center</item><item name="android:button">@null</item><item name="android:textColor">@color/main_rb_font</item><item name="android:layout_height">wrap_content</item>
</style>

(2)第二步:新建四个fragment,继承fragment,并绑定布局文件,代码如下

public class MessageFragment extends Fragment {private static MessageFragment mf;//单例模式public static MessageFragment getMessageFragment(){if(mf == null){mf = new MessageFragment();}return mf;}@Overridepublic View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {View view = inflater.inflate(R.layout.fragment_message ,container, false);return view;}
}

(3)第三步:回到Main_Activity,初始化radiogroup按钮,并添加事件,其中

getChildCount():获取按钮的总数
       getChildAt():获取子按钮

rg_main.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {@Overridepublic void onCheckedChanged(RadioGroup group, int checkedId) {for (int i = 0;i<rg_main.getChildCount();i++){RadioButton rb = (RadioButton)group.getChildAt(i);if(rb.isChecked()){setIndexSelectedTwo(i);break;}}}});

最关键的步骤,开启事务,加载fragment布局

 private void changeFragment(Fragment fragment){FragmentManager fragmentManager = getSupportFragmentManager();//开启事务FragmentTransaction transaction = fragmentManager.beginTransaction();transaction.replace(R.id.fragment , fragment);transaction.commit();}

最后一步,通过判断用户单击了哪个radiobutton按钮并通过setIndexSelected()方法来加载fragment

 //通过index判断当前加载哪个界面public void setIndexSelected(int index){switch (index){case 0:changeFragment(new MainFragment().getMainFragment());break;case 1:changeFragment(new MessageFragment().getMessageFragment());break;case 2:changeFragment(new FindFragment().getFindFragment());break;case 3:changeFragment(new MyFragment().getMyFragment());break;default:break;}}

至此,底部菜单栏就已经做好了,第一篇博客,希望在CSDN的小伙伴们能更加开心地学习Android并持续坚持,同时,这番话也是对自己的一个要求,希望技术能一直进步,谢谢!

Android之底部菜单栏的实现相关推荐

  1. android app底部菜单栏,材料设计指南·组件篇(一):AppBars: Bottom 底部栏

    写在前面的话:内容来自 Material IO ,目前不是从头到尾一一翻译,我自己用到哪部分内容就翻译哪部分.之后会逐步完善,当然你要想先看哪部分也可以留言提要求.不是直译,但不会影响原文内容. 材料 ...

  2. android fragment 底部菜单栏,一句话搞定Android底部导航栏,一键绑定Fragment、ViewPager...

    现在大多数App都会用到底部导航栏,比如常见的聊天工具QQ.微信.购物App等等,有了底部导航栏,用户可以随时切换界面,查看不同的内容.它的实现方式也很多,以前大多使用TabHost来实现,但是现在我 ...

  3. android qq底部菜单栏,怎么关闭手机QQ底部导航栏的“看点”?

    怎么关闭手机QQ底部导航栏的"看点"? 手机QQ的"看点"导航栏很影响用户体验,有没有什么方法能将底部的导航栏关闭呢?跟着小编一起来看看吧. 方法如下: 一.在 ...

  4. android radiogroup 底部菜单,Android底部菜单栏(RadioGroup+Fragment)美化

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

  5. Android底部菜单栏 仿微博效果

    实现方式一:通过TabWidget实现 这种方式主要是在布局中将TabWidget标签嵌套在RelativeLayout中,并且在TabWidget标签中中设置 android:layout_alig ...

  6. 【Android UI设计与开发】第09期:底部菜单栏(四)Fragment+PopupWindow仿QQ空间最新版底部菜单栏

    转载请注明出处:http://blog.csdn.net/yangyu20121224/article/details/9023451          在今天的这篇文章当中,我依然会以实战加理论结合 ...

  7. 【Android UI设计与开发】第06期:底部菜单栏(一)使用TabActivity实现底部菜单栏

    转载请注明出处:http://blog.csdn.net/yangyu20121224/article/details/8989063       从这一篇文章开始,我们将进入到一个应用程序主界面UI ...

  8. Android底部菜单栏(图片+文字)

    虽然网上有很多底部菜单栏的实现方式,但是实现方式各种各样,很多也不符合自己的口味,所以还是总结下底部菜单栏的实现方式,以便以后方便查询使用 实现方式一:通过TabWidget实现 这种方式主要是在布局 ...

  9. 【Android UI设计与开发】5.底部菜单栏(二)使用Fragment实现底部菜单栏

    既然 Fragment 取代了TabActivity,当然 TabActivity 的能实现的菜单栏,Fragment 当然也能实现.主要其实就是通过菜单栏的点击事件切换 Fragment 的显示和隐 ...

  10. Android仿微信底部菜单栏+顶部菜单栏(附源码)

    林炳文Evankaka原创作品.转载请注明出处http://blog.csdn.net/evankaka 本文要实现仿微信微信底部菜单栏+顶部菜单栏,采用ViewPage来做,每一个page对应一个X ...

最新文章

  1. java thread join()_Java Thread join() 的用法
  2. java linux 调用32位so_从linux源码看socket(tcp)的timeout
  3. 地震勘探专业词汇(3)地震波动力学
  4. 大datatable 内存一直涨_听说你的爬虫一直在整站里循环绕圈圈爬取重复的数据?...
  5. Windows下Ionic Android开发环境搭建
  6. ShotCut——视频处理剪辑神器
  7. JAVA 入门PDF
  8. 第三部分 Makefile 的工程组织
  9. 20191204每日一句
  10. pg数据库中postgis的使用
  11. SQL server2008SP3补丁安装教程
  12. 透明png图片和素材免费下载网站
  13. 转载 CSDN 谈谈我对证券公司一些部门的理解(前、中、后台)
  14. 无线路由器设置全教程
  15. 计算机复制教程,教你如何使用电脑复制粘贴快捷键
  16. 把Excel里的url链接转换为图片显示
  17. 爬虫学习:基础爬虫案例实战
  18. 谈谈对于Promise简单的理解
  19. 二叉树OJ(一)二叉树的最大深度 二叉搜索树与双向链表 对称的二叉树
  20. 设计模式学习笔记之(桥接模式brid…

热门文章

  1. 浏览器网页怎么实现文档、小票自动静默打印?【深度】
  2. ansible常用模块
  3. rust大量科技零件_20世纪的黑科技有上万个零件,复杂程度10个人9个看不懂!
  4. 面试——HR问你的职业规划,应该怎样回答?
  5. 【CodeForces 1077E --- Thematic Contests】思维+贪心
  6. 机器人在课堂上所表达的新科技发展观
  7. python画人物代码_代码绘制一只小猪佩奇---python篇
  8. 传奇添加地图与配置参数详解
  9. 【信号与系统】(十一)离散系统的时域分析 ——卷积和
  10. C#基础视频教程5.2 如何编写简单的超级热键