这篇文章主要为大家详细介绍了Android BottomNavigationBar底部导航控制器使用方法,感兴趣的小伙伴们可以参考一下
正文
Android BottomNavigationBar底部导航控制器使用方法详解
最近google在自己推出的material design中增加了bottom navigation导航控制。android一直没有官方的导航控制器,自己实现确实是五花八门,有了这个规定之后,就类似苹果的底部toolbar,以后我们的app就会有一致的风格,先看一张效果:

这是官方在material design中给出一张图,确实很不错。
1.bottomnavigationbar的下载地址
https://github.com/ashok-varma/bottomnavigation
2.使用的方法
2.1在gradle中添加
compile ‘com.ashokvarma.android:bottom-navigation-bar:0.9.5'
2.2布局实现
|
1
2
3
4
5
|
<com.ashokvarma.bottomnavigation.bottomnavigationbar android:layout_gravity="bottom" android:id="@+id/bottom_navigation_bar" android:layout_width="match_parent" android:layout_height="wrap_content"/> |
2.3类中activity中添加bottomnavigationitem
|
1
2
3
4
5
6
7
8
9
|
bottomnavigationbar bottomnavigationbar = (bottomnavigationbar) findviewbyid(r.id.bottom_navigation_bar);bottomnavigationbar .additem(new bottomnavigationitem(r.drawable.ic_home_white_24dp, "home")) .additem(new bottomnavigationitem(r.drawable.ic_book_white_24dp, "books")) .additem(new bottomnavigationitem(r.drawable.ic_music_note_white_24dp, "music")) .additem(new bottomnavigationitem(r.drawable.ic_tv_white_24dp, "movies & tv")) .additem(new bottomnavigationitem(r.drawable.ic_videogame_asset_white_24dp, "games")) .initialise(); |
2.4设置事件监听器tabchangelistener
|
1
2
3
4
5
6
7
8
9
10
11
|
bottomnavigationbar.settabselectedlistener(new bottomnavigationbar.ontabselectedlistener(){ @override public void ontabselected(int position) { } @override public void ontabunselected(int position) {] } @override public void ontabreselected(int position) { } }); |
3.案例的实现
布局文件
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
<?xml version="1.0" encoding="utf-8"?><relativelayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="match_parent" app:layout_behavior="@string/appbar_scrolling_view_behavior" tools:showin="@layout/activity_navigation_view_demo" tools:context="com.lidong.demo.navigation_view.bottomnavigationbardemoactivity"> <linearlayout android:id="@+id/tb" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" /> <com.ashokvarma.bottomnavigation.bottomnavigationbar android:id="@+id/bottom_navigation_bar" android:layout_width="match_parent" android:layout_alignparentbottom="true" android:layout_height="wrap_content"/></relativelayout> |
activity的代码:
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
|
package com.lidong.demo.navigation_view;import android.app.fragmentmanager;import android.app.fragmenttransaction;import android.os.bundle;import android.support.v7.app.appcompatactivity;import android.support.v7.widget.toolbar;import android.util.log;import com.ashokvarma.bottomnavigation.bottomnavigationbar;import com.ashokvarma.bottomnavigation.bottomnavigationitem;import com.lidong.demo.r;/** * bottomnavigationbar实现 */public class bottomnavigationbardemoactivity extends appcompatactivity implements bottomnavigationbar.ontabselectedlistener { private bottomnavigationbar bottomnavigationbar; int lastselectedposition = 0; private string tag = bottomnavigationbardemoactivity.class.getsimplename(); private locationfragment mlocationfragment; private findfragment mfindfragment; private favoritesfragment mfavoritesfragment; private bookfragment mbookfragment; @override protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_navigation_view_demo); toolbar toolbar = (toolbar) findviewbyid(r.id.toolbar); setsupportactionbar(toolbar); bottomnavigationbar = (bottomnavigationbar) findviewbyid(r.id.bottom_navigation_bar); bottomnavigationbar .additem(new bottomnavigationitem(r.mipmap.ic_location_on_white_24dp, "位置").setactivecolor(r.color.orange)) .additem(new bottomnavigationitem(r.mipmap.ic_find_replace_white_24dp, "发现").setactivecolor(r.color.blue)) .additem(new bottomnavigationitem(r.mipmap.ic_favorite_white_24dp, "爱好").setactivecolor(r.color.green)) .additem(new bottomnavigationitem(r.mipmap.ic_book_white_24dp, "图书").setactivecolor(r.color.blue)) .setfirstselectedposition(lastselectedposition ) .initialise(); bottomnavigationbar.settabselectedlistener(this); setdefaultfragment(); } /** * 设置默认的 */ private void setdefaultfragment() { fragmentmanager fm = getfragmentmanager(); fragmenttransaction transaction = fm.begintransaction(); mlocationfragment = locationfragment.newinstance("位置"); transaction.replace(r.id.tabs, mlocationfragment); transaction.commit(); } @override public void ontabselected(int position) { log.d(tag, "ontabselected() called with: " + "position = [" + position + "]"); fragmentmanager fm = this.getfragmentmanager(); //开启事务 fragmenttransaction transaction = fm.begintransaction(); switch (position) { case 0: if (mlocationfragment == null) { mlocationfragment = locationfragment.newinstance("位置"); } transaction.replace(r.id.tb, mlocationfragment); break; case 1: if (mfindfragment == null) { mfindfragment = findfragment.newinstance("发现"); } transaction.replace(r.id.tb, mfindfragment); break; case 2: if (mfavoritesfragment == null) { mfavoritesfragment = favoritesfragment.newinstance("爱好"); } transaction.replace(r.id.tb, mfavoritesfragment); break; case 3: if (mbookfragment == null) { mbookfragment = bookfragment.newinstance("图书"); } transaction.replace(r.id.tb, mbookfragment); break; default: break; } // 事务提交 transaction.commit(); } @override public void ontabunselected(int position) { log.d(tag, "ontabunselected() called with: " + "position = [" + position + "]"); } @override public void ontabreselected(int position) { }} |
fragment的代码
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
|
package com.lidong.demo.navigation_view;import android.app.fragment;import android.os.bundle;import android.view.layoutinflater;import android.view.view;import android.view.viewgroup;import android.widget.textview;import com.lidong.demo.r;public class locationfragment extends fragment { public static locationfragment newinstance(string param1) { locationfragment fragment = new locationfragment(); bundle args = new bundle(); args.putstring("agrs1", param1); fragment.setarguments(args); return fragment; } public locationfragment() { } @override public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); } @override public view oncreateview(layoutinflater inflater, viewgroup container, bundle savedinstancestate) { view view = inflater.inflate(r.layout.fragment_location, container, false); bundle bundle = getarguments(); string agrs1 = bundle.getstring("agrs1"); textview tv = (textview)view.findviewbyid(r.id.tv_location); tv.settext(agrs1); return view; }} |
代码下载:https://github.com/lidong1665/androidrapidlibrary
代码实现起来很简单,就加载布局,添加bottomnavigationitem,设置tabchangelistener就这三步搞定底部导航控制器。

以上就是关于bottomnavigationbar底部导航控制器,希望对大家的学习有所帮助。

发表评论