12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758 |
- package com.reactnativenavigation.views.toptabs;
-
- import android.content.res.ColorStateList;
- import android.graphics.Typeface;
- import android.view.ViewGroup;
- import android.widget.TextView;
-
- import com.reactnativenavigation.parse.params.Color;
- import com.reactnativenavigation.parse.params.Number;
- import com.reactnativenavigation.utils.Task;
- import com.reactnativenavigation.utils.ViewUtils;
-
- class TopTabsStyleHelper {
- private TopTabs topTabs;
-
- TopTabsStyleHelper(TopTabs topTabs) {
- this.topTabs = topTabs;
- }
-
- void applyTopTabsFontSize(Number fontSize) {
- if (!fontSize.hasValue()) return;
- for (int i = 0; i < topTabs.getTabCount(); i++) {
- applyOnTabTitle(i, (title) -> title.setTextSize(fontSize.get()));
- }
- }
-
- void applyTopTabsColors(Color selected, Color unselected) {
- ColorStateList originalColors = topTabs.getTabTextColors();
- int selectedTabColor = originalColors != null ? originalColors.getColorForState(topTabs.getSelectedTabColors(), -1) : -1;
- int tabTextColor = originalColors != null ? originalColors.getColorForState(topTabs.getDefaultTabColors(), -1) : -1;
-
- if (selected.hasValue()) {
- selectedTabColor = selected.get();
- }
-
- if (unselected.hasValue()) {
- tabTextColor = unselected.get();
- }
-
- topTabs.setTabTextColors(tabTextColor, selectedTabColor);
- }
-
- void setFontFamily(int tabIndex, Typeface fontFamily) {
- applyOnTabTitle(tabIndex, (title) -> title.setTypeface(fontFamily));
- }
-
- private void applyOnTabTitle(int tabIndex, Task<TextView> action) {
- TextView title = ViewUtils.findChildByClass(getTabView(tabIndex), TextView.class);
- if (title != null) {
- action.run(title);
- }
- }
-
- private ViewGroup getTabView(int tabIndex) {
- return (ViewGroup) ((ViewGroup) topTabs.getChildAt(0)).getChildAt(tabIndex);
- }
- }
|