package com.reactnativenavigation.views; import android.content.Context; import android.content.res.ColorStateList; import android.support.design.widget.TabLayout; import com.reactnativenavigation.params.StyleParams; import com.reactnativenavigation.views.utils.TopTabsIconColorHelper; public class TopTabs extends TabLayout { public TopTabs(Context context) { super(context); } void setSelectedTabIndicatorStyle(StyleParams style) { if (style.selectedTopTabIndicatorColor.hasColor()) { setSelectedTabIndicatorColor(style.selectedTopTabIndicatorColor.getColor()); } if (style.selectedTopTabIndicatorHeight >= 0) { setSelectedTabIndicatorHeight(style.selectedTopTabIndicatorHeight); } } void setTopTabsTextColor(StyleParams style) { ColorStateList originalTabColors = getTabTextColors(); int selectedTabColor = originalTabColors != null ? originalTabColors.getColorForState(TabLayout.SELECTED_STATE_SET, -1) : -1; int tabTextColor = originalTabColors != null ? originalTabColors.getColorForState(TabLayout.EMPTY_STATE_SET, -1) : -1; if (style.topTabTextColor.hasColor()) { tabTextColor = style.topTabTextColor.getColor(); } if (style.selectedTopTabTextColor.hasColor()) { selectedTabColor = style.selectedTopTabTextColor.getColor(); } setTabTextColors(tabTextColor, selectedTabColor); } void setScrollable(StyleParams style) { if (style.topTabsScrollable) { setTabMode(TabLayout.MODE_SCROLLABLE); } else { setTabMode(TabLayout.MODE_FIXED); } } public void setTopTabsIconColor(StyleParams style) { new TopTabsIconColorHelper(this, style).colorIcons(getSelectedIconColor(), getUnselectedIconColor()); } private int getSelectedIconColor() { ColorStateList originalTabColors = getTabTextColors(); return originalTabColors != null ? originalTabColors.getColorForState(TabLayout.SELECTED_STATE_SET, -1) : -1; } private int getUnselectedIconColor() { ColorStateList originalTabColors = getTabTextColors(); return originalTabColors != null ? originalTabColors.getColorForState(TabLayout.SELECTED_STATE_SET, -1) : -1; } }