Android之底部菜单栏的实现
在我们的项目中,基本上都会用到底部菜单栏,通过点击不同的底部菜单导航到不同的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之底部菜单栏的实现相关推荐
- android app底部菜单栏,材料设计指南·组件篇(一):AppBars: Bottom 底部栏
写在前面的话:内容来自 Material IO ,目前不是从头到尾一一翻译,我自己用到哪部分内容就翻译哪部分.之后会逐步完善,当然你要想先看哪部分也可以留言提要求.不是直译,但不会影响原文内容. 材料 ...
- android fragment 底部菜单栏,一句话搞定Android底部导航栏,一键绑定Fragment、ViewPager...
现在大多数App都会用到底部导航栏,比如常见的聊天工具QQ.微信.购物App等等,有了底部导航栏,用户可以随时切换界面,查看不同的内容.它的实现方式也很多,以前大多使用TabHost来实现,但是现在我 ...
- android qq底部菜单栏,怎么关闭手机QQ底部导航栏的“看点”?
怎么关闭手机QQ底部导航栏的"看点"? 手机QQ的"看点"导航栏很影响用户体验,有没有什么方法能将底部的导航栏关闭呢?跟着小编一起来看看吧. 方法如下: 一.在 ...
- android radiogroup 底部菜单,Android底部菜单栏(RadioGroup+Fragment)美化
众所周知,android的底部菜单栏太重要,平时项目一般都是需要用到的,但是网上关于这方面的demo做得太丑了,实在惨不忍睹,所以这里便用RadioGroup+Fragment的方式写了一个,顺便美化 ...
- Android底部菜单栏 仿微博效果
实现方式一:通过TabWidget实现 这种方式主要是在布局中将TabWidget标签嵌套在RelativeLayout中,并且在TabWidget标签中中设置 android:layout_alig ...
- 【Android UI设计与开发】第09期:底部菜单栏(四)Fragment+PopupWindow仿QQ空间最新版底部菜单栏
转载请注明出处:http://blog.csdn.net/yangyu20121224/article/details/9023451 在今天的这篇文章当中,我依然会以实战加理论结合 ...
- 【Android UI设计与开发】第06期:底部菜单栏(一)使用TabActivity实现底部菜单栏
转载请注明出处:http://blog.csdn.net/yangyu20121224/article/details/8989063 从这一篇文章开始,我们将进入到一个应用程序主界面UI ...
- Android底部菜单栏(图片+文字)
虽然网上有很多底部菜单栏的实现方式,但是实现方式各种各样,很多也不符合自己的口味,所以还是总结下底部菜单栏的实现方式,以便以后方便查询使用 实现方式一:通过TabWidget实现 这种方式主要是在布局 ...
- 【Android UI设计与开发】5.底部菜单栏(二)使用Fragment实现底部菜单栏
既然 Fragment 取代了TabActivity,当然 TabActivity 的能实现的菜单栏,Fragment 当然也能实现.主要其实就是通过菜单栏的点击事件切换 Fragment 的显示和隐 ...
- Android仿微信底部菜单栏+顶部菜单栏(附源码)
林炳文Evankaka原创作品.转载请注明出处http://blog.csdn.net/evankaka 本文要实现仿微信微信底部菜单栏+顶部菜单栏,采用ViewPage来做,每一个page对应一个X ...
最新文章
- java thread join()_Java Thread join() 的用法
- java linux 调用32位so_从linux源码看socket(tcp)的timeout
- 地震勘探专业词汇(3)地震波动力学
- 大datatable 内存一直涨_听说你的爬虫一直在整站里循环绕圈圈爬取重复的数据?...
- Windows下Ionic Android开发环境搭建
- ShotCut——视频处理剪辑神器
- JAVA 入门PDF
- 第三部分 Makefile 的工程组织
- 20191204每日一句
- pg数据库中postgis的使用
- SQL server2008SP3补丁安装教程
- 透明png图片和素材免费下载网站
- 转载 CSDN 谈谈我对证券公司一些部门的理解(前、中、后台)
- 无线路由器设置全教程
- 计算机复制教程,教你如何使用电脑复制粘贴快捷键
- 把Excel里的url链接转换为图片显示
- 爬虫学习:基础爬虫案例实战
- 谈谈对于Promise简单的理解
- 二叉树OJ(一)二叉树的最大深度 二叉搜索树与双向链表 对称的二叉树
- 设计模式学习笔记之(桥接模式brid…