底部导航方式
-
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_FIXED和MODE_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
相关推荐
详细总结了以上四种方式实现底部导航以及使用Tablayout实现顶部导航,也即是双导航
用户打开应用后会进入欢迎界面,然后进行注册登录,主界面有3个底部导航栏:首页、购物车和我的。首先展示所有美食列表,点进去是美食详情页,然后是可折叠式标题栏,可以进行添加购物车,多次点击会增加数量。然后...
app经常用到底部导航栏,早前使用过RadioGroup+FrameLayout实现或者RadioGroup+ViewPager实现,现在基本使用FragmentTabHost+FrameLayout来实现,因为使用起来简单易用。下面写一个小例子简要地总结一下这个组合。 ...
实现的方式有很多种 这里总结最常见的几种方式,以后再添加其他的。 viewPager + RadioGroup viewPager + FragmentTabHost viewpager +TabLayout viewPager+RadioGroup 感觉这是最简单的一个了,我也就不贴代码 说说...
禁用(不是隐藏)底部导航栏与顶部状态栏 其实很简单:删除Android系统应用SystemUI.apk,对应的包名为com.android.systemui。在电脑的ADB上输入以下指令: adb shell pm uninstall –user 0 包名,例如删除SystemUI....
Google 给我们提供的一个专门用于底部导航的 View,菜单在xml布局使用,注意的就是 app:menu 属性,它指定了导航栏显示的页面菜单是怎样的。 2.掌握自定义布局。创建自定义布局的步骤:编写一个自定义xml布局,将这...
Android 一种基于Linux的自由及开放源代码的操作系统,主要使用于移动设备,如智能手机和平板电脑,由Google公司和开放手机联盟领导开发 IOS 由苹果公司开发的移动操作系统 Webkit 一个开源的浏览器引擎,在手机上的...
里面有几个功能,1.跳转到通讯录,2.圆形渐变色,3.转盘,4.dialog样式,5.流式标签,6.底部导航栏,7.可移动item的listview,8.朋友圈图片样式。自己总结综合的,万一以后用的到呢,就都分类保存了。
AppBarLayout 是继承LinerLayout实现的一个ViewGroup容器组件,它是为了Material Design设计的App Bar,支持手势滑动操作的,不过...Toolbar是在 Android 5.0 开始推出的一个 Material Design 风格的导航控件 ,Google
该项目为安卓项目,实现了项目启动时的欢迎页,登陆注册,底部导航、首页的广告轮播,图库展示,问题列表展示,以及个人中心。界面美观,也可以基于此项目继续开发,改造成适合自己需求的项目。欢迎下载。