|
@@ -9,6 +9,7 @@ import android.widget.RelativeLayout;
|
9
|
9
|
import com.aurelhubert.ahbottomnavigation.AHBottomNavigation;
|
10
|
10
|
import com.reactnativenavigation.NavigationApplication;
|
11
|
11
|
import com.reactnativenavigation.params.ActivityParams;
|
|
12
|
+import com.reactnativenavigation.params.FabParams;
|
12
|
13
|
import com.reactnativenavigation.params.ScreenParams;
|
13
|
14
|
import com.reactnativenavigation.params.SideMenuParams;
|
14
|
15
|
import com.reactnativenavigation.params.SnackbarParams;
|
|
@@ -17,7 +18,7 @@ import com.reactnativenavigation.params.TitleBarLeftButtonParams;
|
17
|
18
|
import com.reactnativenavigation.screens.ScreenStack;
|
18
|
19
|
import com.reactnativenavigation.views.BottomTabs;
|
19
|
20
|
import com.reactnativenavigation.views.SideMenu;
|
20
|
|
-import com.reactnativenavigation.views.SnackbarContainer;
|
|
21
|
+import com.reactnativenavigation.views.SnackbarAndFabContainer;
|
21
|
22
|
|
22
|
23
|
import java.util.List;
|
23
|
24
|
|
|
@@ -28,7 +29,7 @@ public class BottomTabsLayout extends RelativeLayout implements Layout, AHBottom
|
28
|
29
|
|
29
|
30
|
private final AppCompatActivity activity;
|
30
|
31
|
private ActivityParams params;
|
31
|
|
- private SnackbarContainer snackbarContainer;
|
|
32
|
+ private SnackbarAndFabContainer snackbarAndFabContainer;
|
32
|
33
|
private BottomTabs bottomTabs;
|
33
|
34
|
private ScreenStack[] screenStacks;
|
34
|
35
|
private final SideMenuParams sideMenuParams;
|
|
@@ -51,6 +52,7 @@ public class BottomTabsLayout extends RelativeLayout implements Layout, AHBottom
|
51
|
52
|
addScreenStacks();
|
52
|
53
|
createSnackbarContainer();
|
53
|
54
|
showInitialScreenStack();
|
|
55
|
+ showFab();
|
54
|
56
|
}
|
55
|
57
|
|
56
|
58
|
private void createSideMenu() {
|
|
@@ -100,17 +102,23 @@ public class BottomTabsLayout extends RelativeLayout implements Layout, AHBottom
|
100
|
102
|
}
|
101
|
103
|
|
102
|
104
|
private void createSnackbarContainer() {
|
103
|
|
- snackbarContainer = new SnackbarContainer(getContext());
|
104
|
|
- RelativeLayout.LayoutParams lp = new RelativeLayout.LayoutParams(MATCH_PARENT, WRAP_CONTENT);
|
|
105
|
+ snackbarAndFabContainer = new SnackbarAndFabContainer(getContext());
|
|
106
|
+ RelativeLayout.LayoutParams lp = new RelativeLayout.LayoutParams(MATCH_PARENT, MATCH_PARENT);
|
105
|
107
|
lp.addRule(ABOVE, bottomTabs.getId());
|
106
|
|
- snackbarContainer.setLayoutParams(lp);
|
107
|
|
- getScreenStackParent().addView(snackbarContainer);
|
|
108
|
+ getScreenStackParent().addView(snackbarAndFabContainer, lp);
|
108
|
109
|
}
|
109
|
110
|
|
110
|
111
|
private void showInitialScreenStack() {
|
111
|
112
|
showStackAndUpdateStyle(screenStacks[0]);
|
112
|
113
|
}
|
113
|
114
|
|
|
115
|
+ private void showFab() {
|
|
116
|
+ FabParams fabParams = getCurrentScreenStack().peek().getFabParams();
|
|
117
|
+ if (fabParams != null) {
|
|
118
|
+ snackbarAndFabContainer.showFab(fabParams);
|
|
119
|
+ }
|
|
120
|
+ }
|
|
121
|
+
|
114
|
122
|
@Override
|
115
|
123
|
public View asView() {
|
116
|
124
|
return this;
|
|
@@ -187,7 +195,7 @@ public class BottomTabsLayout extends RelativeLayout implements Layout, AHBottom
|
187
|
195
|
@Override
|
188
|
196
|
public void showSnackbar(SnackbarParams params) {
|
189
|
197
|
final String eventId = getCurrentScreenStack().peek().getNavigatorEventId();
|
190
|
|
- snackbarContainer.showSnackbar(eventId, params);
|
|
198
|
+ snackbarAndFabContainer.showSnackbar(eventId, params);
|
191
|
199
|
}
|
192
|
200
|
|
193
|
201
|
public void selectBottomTabByTabIndex(Integer index) {
|
|
@@ -205,7 +213,7 @@ public class BottomTabsLayout extends RelativeLayout implements Layout, AHBottom
|
205
|
213
|
if (isCurrentStack(screenStack)) {
|
206
|
214
|
bottomTabs.setStyleFromScreen(screenParams.styleParams);
|
207
|
215
|
}
|
208
|
|
- snackbarContainer.onScreenChange();
|
|
216
|
+ snackbarAndFabContainer.onScreenChange();
|
209
|
217
|
}
|
210
|
218
|
|
211
|
219
|
@Override
|
|
@@ -216,14 +224,14 @@ public class BottomTabsLayout extends RelativeLayout implements Layout, AHBottom
|
216
|
224
|
setBottomTabsStyleFromCurrentScreen();
|
217
|
225
|
}
|
218
|
226
|
});
|
219
|
|
- snackbarContainer.onScreenChange();
|
|
227
|
+ snackbarAndFabContainer.onScreenChange();
|
220
|
228
|
}
|
221
|
229
|
|
222
|
230
|
@Override
|
223
|
231
|
public void popToRoot(ScreenParams params) {
|
224
|
232
|
getCurrentScreenStack().popToRoot(params.animateScreenTransitions);
|
225
|
233
|
setBottomTabsStyleFromCurrentScreen();
|
226
|
|
- snackbarContainer.onScreenChange();
|
|
234
|
+ snackbarAndFabContainer.onScreenChange();
|
227
|
235
|
}
|
228
|
236
|
|
229
|
237
|
@Override
|
|
@@ -238,12 +246,12 @@ public class BottomTabsLayout extends RelativeLayout implements Layout, AHBottom
|
238
|
246
|
screenStacks[currentStackIndex] = newStack;
|
239
|
247
|
|
240
|
248
|
bottomTabs.setStyleFromScreen(params.styleParams);
|
241
|
|
- snackbarContainer.onScreenChange();
|
|
249
|
+ snackbarAndFabContainer.onScreenChange();
|
242
|
250
|
}
|
243
|
251
|
|
244
|
252
|
@Override
|
245
|
253
|
public void destroy() {
|
246
|
|
- snackbarContainer.destroy();
|
|
254
|
+ snackbarAndFabContainer.destroy();
|
247
|
255
|
for (ScreenStack screenStack : screenStacks) {
|
248
|
256
|
screenStack.destroy();
|
249
|
257
|
}
|
|
@@ -256,7 +264,7 @@ public class BottomTabsLayout extends RelativeLayout implements Layout, AHBottom
|
256
|
264
|
public boolean onTabSelected(int position, boolean wasSelected) {
|
257
|
265
|
hideCurrentStack();
|
258
|
266
|
showNewStack(position);
|
259
|
|
- snackbarContainer.onScreenChange();
|
|
267
|
+ snackbarAndFabContainer.onScreenChange();
|
260
|
268
|
return true;
|
261
|
269
|
}
|
262
|
270
|
|