123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134 |
- package com.reactnativenavigation.views;
-
- import android.content.Context;
- import android.graphics.Color;
- import android.text.TextUtils;
-
- import com.aurelhubert.ahbottomnavigation.AHBottomNavigation;
- import com.aurelhubert.ahbottomnavigation.AHBottomNavigationItem;
- import com.reactnativenavigation.animation.VisibilityAnimator;
- import com.reactnativenavigation.params.AppStyle;
- import com.reactnativenavigation.params.ScreenParams;
- import com.reactnativenavigation.params.StyleParams;
- import com.reactnativenavigation.utils.ViewUtils;
- import com.reactnativenavigation.views.utils.Constants;
-
- import java.util.List;
-
- public class BottomTabs extends AHBottomNavigation {
-
- private VisibilityAnimator visibilityAnimator;
-
- public BottomTabs(Context context) {
- super(context);
- setForceTint(true);
- setId(ViewUtils.generateViewId());
- createVisibilityAnimator();
- setStyle();
- setFontFamily();
- }
-
- public void addTabs(List<ScreenParams> params, OnTabSelectedListener onTabSelectedListener) {
- for (ScreenParams screenParams : params) {
- AHBottomNavigationItem item = new AHBottomNavigationItem(screenParams.tabLabel, screenParams.tabIcon,
- Color.GRAY);
- addItem(item);
- setOnTabSelectedListener(onTabSelectedListener);
- }
- setTitlesDisplayState();
- }
-
- public void setStyleFromScreen(StyleParams params) {
- if (params.bottomTabsColor.hasColor()) {
- setBackgroundColor(params.bottomTabsColor);
- }
- if (params.bottomTabsButtonColor.hasColor()) {
- setInactiveColor(params.bottomTabsButtonColor.getColor());
- }
- if (params.selectedBottomTabsButtonColor.hasColor()) {
- setAccentColor(params.selectedBottomTabsButtonColor.getColor());
- }
-
- setVisibility(params.bottomTabsHidden, true);
- }
-
- public void setTabButton(ScreenParams params, Integer index) {
- if (params.tabIcon != null) {
- AHBottomNavigationItem item = this.getItem(index);
- item.setDrawable(params.tabIcon);
- refresh();
- }
- }
-
- private void setTitlesDisplayState() {
- if (AppStyle.appStyle.forceTitlesDisplay) {
- setTitleState(TitleState.ALWAYS_SHOW);
- } else if (hasTabsWithLabels()) {
- setTitleState(TitleState.SHOW_WHEN_ACTIVE);
- } else {
- setTitleState(TitleState.ALWAYS_HIDE);
- }
- }
-
- private boolean hasTabsWithLabels() {
- for (int i = 0; i < getItemsCount(); i++) {
- String title = getItem(0).getTitle(getContext());
- if (!TextUtils.isEmpty(title)) {
- return true;
- }
- }
- return false;
- }
-
- public void setVisibility(boolean hidden, boolean animated) {
- if (visibilityAnimator != null) {
- visibilityAnimator.setVisible(!hidden, animated);
- } else {
- setVisibility(hidden);
- }
- }
-
- private void setBackgroundColor(StyleParams.Color bottomTabsColor) {
- if (bottomTabsColor.hasColor()) {
- setDefaultBackgroundColor(bottomTabsColor.getColor());
- } else {
- setDefaultBackgroundColor(Color.WHITE);
- }
- }
-
- private void setVisibility(boolean bottomTabsHidden) {
- setVisibility(bottomTabsHidden ? GONE : VISIBLE);
- }
-
- private void createVisibilityAnimator() {
- visibilityAnimator = new VisibilityAnimator(BottomTabs.this,
- VisibilityAnimator.HideDirection.Down,
- (int) ViewUtils.convertDpToPixel(Constants.BOTTOM_TABS_HEIGHT));
- }
-
- private void setStyle() {
- if (hasBadgeBackgroundColor()) {
- setNotificationBackgroundColor(AppStyle.appStyle.bottomTabBadgeBackgroundColor.getColor());
- }
- if (hasBadgeTextColor()) {
- setNotificationTextColor(AppStyle.appStyle.bottomTabBadgeTextColor.getColor());
- }
- }
-
- private boolean hasBadgeTextColor() {
- return AppStyle.appStyle.bottomTabBadgeTextColor != null &&
- AppStyle.appStyle.bottomTabBadgeTextColor.hasColor();
- }
-
- private boolean hasBadgeBackgroundColor() {
- return AppStyle.appStyle.bottomTabBadgeBackgroundColor != null &&
- AppStyle.appStyle.bottomTabBadgeBackgroundColor.hasColor();
- }
-
- private void setFontFamily() {
- if (AppStyle.appStyle.bottomTabFontFamily.hasFont()) {
- setTitleTypeface(AppStyle.appStyle.bottomTabFontFamily.get());
- }
- }
- }
|