Skip to content

Commit 19dae92

Browse files
committed
Add support for bottom navigation view.
1 parent 321956f commit 19dae92

21 files changed

Lines changed: 433 additions & 83 deletions

CHANGELOG.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,10 @@
11
# Changelog
22

3+
## Version 0.3.0
4+
5+
* Add support for `BottomNavigationView`.
6+
* Fix bug in state adapter.
7+
38
## Version 0.2.0
49

510
* Added `shouldHandleMenuItem()`, which can be overridden to handle some menu items yourself in the listener set via `setNavigationItemSelectedListener()`.

README.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
[![Build Status](https://travis-ci.org/patloew/NavigationViewFragmentAdapters.svg?branch=master)](https://travis-ci.org/patloew/NavigationViewFragmentAdapters) [ ![Download](https://api.bintray.com/packages/patloew/maven/NavigationViewFragmentAdapters/images/download.svg) ](https://bintray.com/patloew/maven/NavigationViewFragmentAdapters/_latestVersion) [![API](https://img.shields.io/badge/API-9%2B-brightgreen.svg?style=flat)](https://android-arsenal.com/api?level=9)
44

5-
A small library containing two adapters which allow for easy fragment management with a NavigationView.
5+
A small library containing two adapters which allow for easy fragment management with a NavigationView or BottomNavigationView.
66

77
The library handles replacing the fragments and saving/restoring the fragment state, including showing the right fragment when opening an app again after it was killed.
88

@@ -45,7 +45,7 @@ Now, create an instance and attach it to your NavigationView in your Activity `o
4545

4646
Also, don't forget to call `adapter.onSaveInstanceState()` in your Activity `onSaveInstanceState()`.
4747

48-
Now you have your navigation drawer up and running, including state saving of the fragments.
48+
Now you have your navigation drawer or bottom navigation view up and running, including state saving of the fragments.
4949

5050
# Advanced Usage
5151

@@ -97,7 +97,7 @@ A basic sample app with example Activities for both adapters is available in the
9797
The library is available on jCenter. Add the following to your `build.gradle`:
9898

9999
dependencies {
100-
compile 'com.patloew.navigationviewfragmentadapters:adapters:0.2.0'
100+
compile 'com.patloew.navigationviewfragmentadapters:adapters:0.3.0'
101101
}
102102

103103
# License

build.gradle

Lines changed: 4 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -5,22 +5,17 @@ buildscript {
55
jcenter()
66
}
77
dependencies {
8-
classpath 'com.android.tools.build:gradle:2.1.2'
8+
classpath 'com.android.tools.build:gradle:2.2.3'
99

10-
classpath 'me.tatarka:gradle-retrolambda:3.3.0-beta4'
11-
classpath 'me.tatarka.retrolambda.projectlombok:lombok.ast:0.2.3.a2'
10+
classpath 'me.tatarka:gradle-retrolambda:3.5.0'
1211

13-
classpath 'com.neenbedankt.gradle.plugins:android-apt:1.8'
14-
15-
classpath 'com.jfrog.bintray.gradle:gradle-bintray-plugin:1.6'
16-
classpath "com.github.dcendents:android-maven-gradle-plugin:1.3"
12+
classpath 'com.jfrog.bintray.gradle:gradle-bintray-plugin:1.7.3'
13+
classpath "com.github.dcendents:android-maven-gradle-plugin:1.5"
1714

1815

1916
// NOTE: Do not place your application dependencies here; they belong
2017
// in the individual module build.gradle files
2118
}
22-
23-
configurations.classpath.exclude group: 'com.android.tools.external.lombok'
2419
}
2520

2621
allprojects {

gradle/wrapper/gradle-wrapper.jar

572 Bytes
Binary file not shown.
Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
#Mon Dec 28 10:00:20 PST 2015
1+
#Mon Jan 23 16:26:23 CET 2017
22
distributionBase=GRADLE_USER_HOME
33
distributionPath=wrapper/dists
44
zipStoreBase=GRADLE_USER_HOME
55
zipStorePath=wrapper/dists
6-
distributionUrl=https\://services.gradle.org/distributions/gradle-2.13-all.zip
6+
distributionUrl=https\://services.gradle.org/distributions/gradle-3.3-all.zip

gradlew

Lines changed: 40 additions & 28 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

gradlew.bat

Lines changed: 4 additions & 10 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

library/build.gradle

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -3,18 +3,18 @@ apply plugin: 'com.jfrog.bintray'
33
apply plugin: 'com.github.dcendents.android-maven'
44

55
group = 'com.patloew.navigationviewfragmentadapters'
6-
version = '0.2.0'
6+
version = '0.3.0'
77
project.archivesBaseName = 'adapters'
88

99
android {
10-
compileSdkVersion 24
11-
buildToolsVersion "24.0.0"
10+
compileSdkVersion 25
11+
buildToolsVersion "25.0.2"
1212

1313
defaultConfig {
1414
minSdkVersion 9
15-
targetSdkVersion 24
16-
versionCode 3
17-
versionName "0.2.0"
15+
targetSdkVersion 25
16+
versionCode 4
17+
versionName "0.3.0"
1818
}
1919
buildTypes {
2020
release {
@@ -32,8 +32,8 @@ android {
3232

3333
dependencies {
3434
compile fileTree(dir: 'libs', include: ['*.jar'])
35-
compile 'com.android.support:appcompat-v7:24.0.0'
36-
compile 'com.android.support:design:24.0.0'
35+
compile 'com.android.support:appcompat-v7:25.1.0'
36+
compile 'com.android.support:design:25.1.0'
3737

3838
testCompile 'junit:junit:4.12'
3939
testCompile 'org.mockito:mockito-core:1.10.19'

library/src/main/java/com/patloew/navigationviewfragmentadapters/BaseNavigationViewFragmentAdapter.java

Lines changed: 25 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
import android.support.annotation.IdRes;
1919
import android.support.annotation.NonNull;
2020
import android.support.annotation.Nullable;
21+
import android.support.design.widget.BottomNavigationView;
2122
import android.support.design.widget.NavigationView;
2223
import android.support.v4.app.Fragment;
2324
import android.support.v4.app.FragmentManager;
@@ -30,7 +31,7 @@ abstract class BaseNavigationViewFragmentAdapter {
3031
final FragmentManager fm;
3132
final int containerId;
3233

33-
NavigationView.OnNavigationItemSelectedListener listener = null;
34+
OnNavigationItemSelectedListener listener = null;
3435

3536
FragmentTransactionAnimations animations = new FragmentTransactionAnimations();
3637
FragmentTransactionAnimations backstackAnimations = new FragmentTransactionAnimations();
@@ -47,7 +48,7 @@ public BaseNavigationViewFragmentAdapter(@NonNull FragmentManager fragmentManage
4748

4849
// For internal use
4950
@NonNull
50-
abstract NavigationView.OnNavigationItemSelectedListener getFragmentAdapterItemSelectedListener();
51+
abstract OnNavigationItemSelectedListener getFragmentAdapterItemSelectedListener();
5152

5253

5354
/**
@@ -89,7 +90,7 @@ public final void setBackStackCustomAnimations(@AnimRes int enter, @AnimRes int
8990
*
9091
* @param listener An OnNavigationItemSelectedListener
9192
*/
92-
public final void setNavigationItemSelectedListener(@Nullable NavigationView.OnNavigationItemSelectedListener listener) {
93+
public final void setNavigationItemSelectedListener(@Nullable OnNavigationItemSelectedListener listener) {
9394
this.listener = listener;
9495
}
9596

@@ -114,6 +115,27 @@ public final void attachTo(NavigationView navigationView) {
114115
}
115116
}
116117

118+
/**
119+
* Attaches this adapter to a BottomNavigationView. This can only
120+
* be called once per adapter.
121+
*
122+
* @param bottomNavigationView The BottomNavigationView to attach to.
123+
*/
124+
public final void attachTo(BottomNavigationView bottomNavigationView) {
125+
if(attached) {
126+
throw new IllegalStateException("The adapter can only be attached once.");
127+
128+
} else {
129+
bottomNavigationView.setOnNavigationItemSelectedListener(getFragmentAdapterItemSelectedListener());
130+
131+
if(!shouldAddToBackStack(currentlyAttachedId)) {
132+
bottomNavigationView.getMenu().performIdentifierAction(currentlyAttachedId, 0);
133+
}
134+
135+
attached = true;
136+
}
137+
}
138+
117139
/**
118140
* Get the fragment tag for the Fragment with menuItemId. Override
119141
* method for custom tags.

library/src/main/java/com/patloew/navigationviewfragmentadapters/CloseDrawerNavigationItemSelectedListener.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,15 +14,14 @@
1414

1515
package com.patloew.navigationviewfragmentadapters;
1616

17-
import android.support.design.widget.NavigationView;
1817
import android.support.v4.widget.DrawerLayout;
1918
import android.view.MenuItem;
2019

2120
/**
2221
* An listener which closes the drawer of a drawer layout,
2322
* when a NavigationView item is selected.
2423
*/
25-
public class CloseDrawerNavigationItemSelectedListener implements NavigationView.OnNavigationItemSelectedListener {
24+
public class CloseDrawerNavigationItemSelectedListener implements OnNavigationItemSelectedListener {
2625

2726
private final DrawerLayout drawerLayout;
2827

0 commit comments

Comments
 (0)