`
安卓干货铺
  • 浏览: 34610 次
  • 性别: Icon_minigender_1
  • 来自: 天津
社区版块
存档分类
最新评论

Android底部导航总结

阅读更多

 

底部导航方式

  • BottomNavigationBar

  • TabLayout

  • RadioGroup

  • LinearLayout + TextView

  • checkBox

这里只讲解前三种实现方式。

 

 

一.BottomNavigationBar+viewPager

 

先上效果图:

 

 

1.使用方法:

BottomNavigationBar源码下载地址:

https://github.com/Ashok-Varma/BottomNavigation

(1).添加依赖

compile 'com.ashokvarma.android:bottom-navigation-bar:2.0.2'

(2).布局

 <android.support.v4.view.ViewPager        android:id="@+id/viewPager"        android:layout_width="match_parent"        android:layout_height="0dp"        android:layout_weight="1"></android.support.v4.view.ViewPager> <com.ashokvarma.bottomnavigation.BottomNavigationBar    android:id="@+id/bottom_navigation_bar"    android:layout_gravity="bottom"    android:layout_alignParentBottom="true"    android:layout_width="match_parent"    android:layout_height="wrap_content"></com.ashokvarma.bottomnavigation.BottomNavigationBar>

(3).主要代码

 bottom_navigation_bar.setMode(BottomNavigationBar.MODE_SHIFTING)                .setBackgroundStyle(BottomNavigationBar.BACKGROUND_STYLE_RIPPLE); //        bottom_navigation_bar //值得一提,模式跟背景的设置都要在添加tab前面,不然不会有效果。 //                .setActiveColor("#ffffff")//选中颜色 图标和文字 //                .setInActiveColor("#8e8e8e")//默认未选择颜色 //                .setBarBackgroundColor("#00796B");//默认背景色        bottom_navigation_bar                .addItem(new BottomNavigationItem(R.mipmap.ic_favorite_white_24dp,"Like").setActiveColorResource(R.color.orange))                .addItem(new BottomNavigationItem(R.mipmap.ic_home_white_24dp,"Home").setActiveColorResource(R.color.teal))                .addItem(new BottomNavigationItem(R.mipmap.ic_music_note_white_24dp,"Music").setActiveColorResource(R.color.blue))                .addItem(new BottomNavigationItem(R.mipmap.ic_tv_white_24dp,"TV").setActiveColorResource(R.color.brown))  .setFirstSelectedPosition(0)//设置默认选择的按钮                .initialise();//所有的设置需在调用该方法前完成        viewPager.setCurrentItem(0);        bottom_navigation_bar //设置lab点击事件                .setTabSelectedListener(new BottomNavigationBar.OnTabSelectedListener() {                    @Override                    public void onTabSelected(int position) {                        viewPager.setCurrentItem(position);                    }                    @Override                    public void onTabUnselected(int position) {                    }                    @Override                    public void onTabReselected(int position) {                    }                });

2.部分属性解析

Mode属性:

对应的代码为:

bottom_navigation_bar.setMode(BottomNavigationBar.MODE_SHIFTING);

这个属性有两种可选的值,MODE_FIXEDMODE_SHIFTING

  • MODE_FIXED:选中的Item会稍大于未选中的Item,无论Item是否选中,都会显示文字和图标。 

  • MODE_SHIFTING:选中的Item明显大于未选中的Item,未选中的Item只显示图标

上面的效果图就是MODE_SHIFTING的效果,被选中的item明显扩大,至于MODE_FIXED属性我就不做演示了。

 

BackgroundStyle属性:

对应的代码为:

 

bottom_navigation_bar.setBackgroundStyle(BottomNavigationBar.BACKGROUND_STYLE_RIPPLE);

这个属性有两个可选的值: 

  • BACKGROUND_STYLE_RIPPLE 

  • BACKGROUND_STYLE_STATIC 

上面的效果图是BackgroundStyle的属性是BACKGROUND_STYLE_RIPPLE ,下面展示的是BACKGROUND_STYLE_STATIC 属性的:

 

 

Item角标设置

通过BottomNavigationItem的setBadgeItem方法,可以给每个Item设置一个独立的角标,对于角标支持设置它的背景、文案、文案颜色以及在选中时是否隐藏角标:

 

BadgeItem badgeItem = new BadgeItem()            
    .setBackgroundColorResource(android.R.color.holo_red_dark) //设置角标背景色                
     .setText("5") //设置角标的文字                
     .setTextColorResource(android.R.color.white) //设置角标文字颜色      .setHideOnSelect(true); //在选中时是否隐藏角标 mBottomNavigationBar.addItem(new BottomNavigationItem(R.drawable.ic_5, "Item 5")           .setActiveColorResource(android.R.color.holo_orange_dark)    
     .setBadgeItem(badgeItem));

其他属性

               .setActiveColor("#ffffff")//选中颜色 图标和文字                .setInActiveColor("#8e8e8e")//默认未选择颜色                .setBarBackgroundColor("#00796B");//默认背景色                .setFirstSelectedPosition(0)//设置默认选择的按钮                .initialise();//所有的设置需在调用该方法前完成

还有一些其他的属性,这里就不一一列出了。

 

二.RadioGroup+ViewPager

 

核心代码:

 

radioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {    @Override    public void onCheckedChanged(RadioGroup group, int checkedId) {        switch (checkedId){            case R.id.rb_Monitor:                viewPager.setCurrentItem(0);                break;            case R.id.rb_Notice:                viewPager.setCurrentItem(1);                break;            case R.id.rb_line:                viewPager.setCurrentItem(2);                break;            case R.id.rb_date:                viewPager.setCurrentItem(3);                break;        }    } }); radioGroup.check(R.id.rb_Monitor);

viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {    @Override    public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {    }    @Override    public void onPageSelected(int position) {      switch (position){          case 0:              radioGroup.check(R.id.rb_Monitor);              break;          case 1:              radioGroup.check(R.id.rb_Notice);              break;          case 2:              radioGroup.check(R.id.rb_line);              break;          case 3:              radioGroup.check(R.id.rb_date);              break;      }    }

 

三.TabLayout+viewPager

 

TabLayout相信大家都很清楚吧,TabLayout提供了一个水平的布局用来展示Tabs。一般不会用在底部导航,这里只是总结这种方式。

效果图如下:

 

 

代码就不贴出来了,如果有疑问直接留言或者加我微信!

这几天正在整体其他资源一起上传到Github,如果急需源码的话直接去CSDN下载:

http://download.csdn.net/download/qq_34908107/10011208

 

0
0
分享到:
评论

相关推荐

    使用RadioGroup、Tablayout、反射和FragmentTabHost四种方式实现底部导航

    详细总结了以上四种方式实现底部导航以及使用Tablayout实现顶部导航,也即是双导航

    Android Studio实现订餐系统

    用户打开应用后会进入欢迎界面,然后进行注册登录,主界面有3个底部导航栏:首页、购物车和我的。首先展示所有美食列表,点进去是美食详情页,然后是可折叠式标题栏,可以进行添加购物车,多次点击会增加数量。然后...

    FragmentTabHost FrameLayout实现底部导航栏

    app经常用到底部导航栏,早前使用过RadioGroup+FrameLayout实现或者RadioGroup+ViewPager实现,现在基本使用FragmentTabHost+FrameLayout来实现,因为使用起来简单易用。下面写一个小例子简要地总结一下这个组合。 ...

    Android开发之微信底部菜单栏实现的几种方法汇总

    实现的方式有很多种 这里总结最常见的几种方式,以后再添加其他的。 viewPager + RadioGroup viewPager + FragmentTabHost viewpager +TabLayout viewPager+RadioGroup 感觉这是最简单的一个了,我也就不贴代码 说说...

    Android开发板开发总结

    禁用(不是隐藏)底部导航栏与顶部状态栏 其实很简单:删除Android系统应用SystemUI.apk,对应的包名为com.android.systemui。在电脑的ADB上输入以下指令: adb shell pm uninstall –user 0 包名,例如删除SystemUI....

    安卓课程设计外卖/网上商城(含报告)

    Google 给我们提供的一个专门用于底部导航的 View,菜单在xml布局使用,注意的就是 app:menu 属性,它指定了导航栏显示的页面菜单是怎样的。 2.掌握自定义布局。创建自定义布局的步骤:编写一个自定义xml布局,将这...

    工程硕士学位论文 基于Android+HTML5的移动Web项目高效开发探究

    Android 一种基于Linux的自由及开放源代码的操作系统,主要使用于移动设备,如智能手机和平板电脑,由Google公司和开放手机联盟领导开发 IOS 由苹果公司开发的移动操作系统 Webkit 一个开源的浏览器引擎,在手机上的...

    Android kotlin一些app常用功能。

    里面有几个功能,1.跳转到通讯录,2.圆形渐变色,3.转盘,4.dialog样式,5.流式标签,6.底部导航栏,7.可移动item的listview,8.朋友圈图片样式。自己总结综合的,万一以后用的到呢,就都分类保存了。

    Android实现酷炫的顶部栏

    AppBarLayout 是继承LinerLayout实现的一个ViewGroup容器组件,它是为了Material Design设计的App Bar,支持手势滑动操作的,不过...Toolbar是在 Android 5.0 开始推出的一个 Material Design 风格的导航控件 ,Google

    安卓实训项目

    该项目为安卓项目,实现了项目启动时的欢迎页,登陆注册,底部导航、首页的广告轮播,图库展示,问题列表展示,以及个人中心。界面美观,也可以基于此项目继续开发,改造成适合自己需求的项目。欢迎下载。

Global site tag (gtag.js) - Google Analytics