diff --git a/OsmAnd/res/layout/center_button_container.xml b/OsmAnd/res/layout/center_button_container.xml
index 8c8fdf1617..531b6b97e8 100644
--- a/OsmAnd/res/layout/center_button_container.xml
+++ b/OsmAnd/res/layout/center_button_container.xml
@@ -1,19 +1,19 @@
+ xmlns:osmand="http://schemas.android.com/apk/res-auto"
+ android:id="@+id/center_button_container"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_weight="1">
-
+
\ No newline at end of file
diff --git a/OsmAnd/res/layout/custom_radio_buttons.xml b/OsmAnd/res/layout/custom_radio_buttons.xml
index d5ef10977d..2ea2775d62 100644
--- a/OsmAnd/res/layout/custom_radio_buttons.xml
+++ b/OsmAnd/res/layout/custom_radio_buttons.xml
@@ -1,7 +1,6 @@
-
-
+ android:layout_weight="1" />
-
-
-
+ android:layout_weight="1" />
-
-
-
-
-
-
-
-
-
+ android:layout_weight="1" />
\ No newline at end of file
diff --git a/OsmAnd/res/layout/custom_radio_buttons_group.xml b/OsmAnd/res/layout/custom_radio_buttons_group.xml
deleted file mode 100644
index f0caa4a375..0000000000
--- a/OsmAnd/res/layout/custom_radio_buttons_group.xml
+++ /dev/null
@@ -1,68 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/OsmAnd/res/layout/gpx_list_item_tab_content.xml b/OsmAnd/res/layout/gpx_list_item_tab_content.xml
index d2ce779b8b..ac7918d06a 100644
--- a/OsmAnd/res/layout/gpx_list_item_tab_content.xml
+++ b/OsmAnd/res/layout/gpx_list_item_tab_content.xml
@@ -1,24 +1,32 @@
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:orientation="vertical">
-
+
-
+
+
-
+
+
+
\ No newline at end of file
diff --git a/OsmAnd/res/layout/left_button_container.xml b/OsmAnd/res/layout/left_button_container.xml
index c6a32ec74a..e56ec7b06a 100644
--- a/OsmAnd/res/layout/left_button_container.xml
+++ b/OsmAnd/res/layout/left_button_container.xml
@@ -1,7 +1,6 @@
+ osmand:typeface="@string/font_roboto_medium" />
-
+
\ No newline at end of file
diff --git a/OsmAnd/res/layout/right_button_container.xml b/OsmAnd/res/layout/right_button_container.xml
index bb618949af..02b237d6c0 100644
--- a/OsmAnd/res/layout/right_button_container.xml
+++ b/OsmAnd/res/layout/right_button_container.xml
@@ -12,8 +12,8 @@
android:layout_height="match_parent"
android:background="?attr/selectableItemBackground"
android:gravity="center"
+ android:text="@string/map_widget_speed"
android:textSize="@dimen/default_desc_text_size"
- osmand:typeface="@string/font_roboto_medium"
- android:text="@string/map_widget_speed"/>
+ osmand:typeface="@string/font_roboto_medium" />
-
+
\ No newline at end of file
diff --git a/OsmAnd/src/net/osmand/plus/UiUtilities.java b/OsmAnd/src/net/osmand/plus/UiUtilities.java
index 8847f953eb..47f3842711 100644
--- a/OsmAnd/src/net/osmand/plus/UiUtilities.java
+++ b/OsmAnd/src/net/osmand/plus/UiUtilities.java
@@ -86,11 +86,6 @@ public class UiUtilities {
}
public enum CustomRadioButtonType {
- START,
- END,
- }
-
- public enum CustomRadioButtonTypeGroup {
START,
CENTER,
END,
@@ -462,6 +457,8 @@ public class UiUtilities {
TextView startButtonText = buttonsView.findViewById(R.id.left_button);
View startButtonContainer = buttonsView.findViewById(R.id.left_button_container);
+ TextView centerButtonText = buttonsView.findViewById(R.id.center_button);
+ View centerButtonContainer = buttonsView.findViewById(R.id.center_button_container);
TextView endButtonText = buttonsView.findViewById(R.id.right_button);
View endButtonContainer = buttonsView.findViewById(R.id.right_button_container);
GradientDrawable background = new GradientDrawable();
@@ -477,9 +474,27 @@ public class UiUtilities {
endButtonText.setTextColor(activeColor);
startButtonContainer.setBackgroundDrawable(background);
startButtonText.setTextColor(textColor);
+
+ if (centerButtonContainer != null) {
+ centerButtonText.setTextColor(activeColor);
+ centerButtonContainer.setBackgroundColor(Color.TRANSPARENT);
+ }
+ } else if (buttonType == CustomRadioButtonType.CENTER) {
+ background.setCornerRadii(new float[] {0, 0, 0, 0, 0, 0, 0, 0});
+ centerButtonContainer.setBackgroundDrawable(background);
+ centerButtonText.setTextColor(textColor);
+
+ if (endButtonContainer != null) {
+ endButtonText.setTextColor(activeColor);
+ endButtonContainer.setBackgroundColor(Color.TRANSPARENT);
+ }
+ if (startButtonContainer != null) {
+ startButtonText.setTextColor(activeColor);
+ startButtonContainer.setBackgroundColor(Color.TRANSPARENT);
+ }
} else {
if (isLayoutRtl) {
- background.setCornerRadii(new float[]{radius, radius, 0, 0, 0, 0, radius, radius});
+ background.setCornerRadii(new float[] {radius, radius, 0, 0, 0, 0, radius, radius});
} else {
background.setCornerRadii(new float[]{0, 0, radius, radius, radius, radius, 0, 0});
}
@@ -487,119 +502,14 @@ public class UiUtilities {
endButtonText.setTextColor(textColor);
startButtonContainer.setBackgroundColor(Color.TRANSPARENT);
startButtonText.setTextColor(activeColor);
- }
- }
-
- public static void updateCustomRadioButtonsGroup(Context app, View buttonsView, boolean nightMode,
- CustomRadioButtonTypeGroup buttonType) {
- int activeColor = ContextCompat.getColor(app, nightMode
- ? R.color.active_color_primary_dark
- : R.color.active_color_primary_light);
- int inActiveColor = ContextCompat.getColor(app, nightMode
- ? R.color.text_color_secondary_dark
- : R.color.text_color_secondary_light);
- int textColor = ContextCompat.getColor(app, nightMode
- ? R.color.text_color_primary_dark
- : R.color.text_color_primary_light);
- int roundedCorner = AndroidUtils.dpToPx(app, 4);
- boolean isLayoutRtl = AndroidUtils.isLayoutRtl(app);
-
- TextView startButtonText = buttonsView.findViewById(R.id.left_button);
- View startButtonContainer = buttonsView.findViewById(R.id.left_button_container);
- TextView centerButtonText = buttonsView.findViewById(R.id.center_button);
- View centerButtonContainer = buttonsView.findViewById(R.id.center_button_container);
- TextView endButtonText = buttonsView.findViewById(R.id.right_button);
- View endButtonContainer = buttonsView.findViewById(R.id.right_button_container);
- GradientDrawable background = new GradientDrawable();
- background.setColor(UiUtilities.getColorWithAlpha(activeColor, 0.1f));
- background.setStroke(AndroidUtils.dpToPx(app, 1), UiUtilities.getColorWithAlpha(activeColor, 0.5f));
-
- GradientDrawable startButtonRoundedCorner = new GradientDrawable();
- startButtonRoundedCorner.setStroke(AndroidUtils.dpToPx(app, 1), UiUtilities.getColorWithAlpha(inActiveColor, 0.5f));
- GradientDrawable endButtonRoundedCorner = new GradientDrawable();
- endButtonRoundedCorner.setStroke(AndroidUtils.dpToPx(app, 1), UiUtilities.getColorWithAlpha(inActiveColor, 0.5f));
- GradientDrawable centerButtonSharpCorner = new GradientDrawable();
- centerButtonSharpCorner.setStroke(AndroidUtils.dpToPx(app, 1), UiUtilities.getColorWithAlpha(inActiveColor, 0.5f));
-
- setStartEndCenterRoundedCorner(roundedCorner, isLayoutRtl, startButtonRoundedCorner, endButtonRoundedCorner, centerButtonSharpCorner);
-
- if (buttonType == CustomRadioButtonTypeGroup.START) {
- if (isLayoutRtl) {
- background.setCornerRadii(new float[]{0, 0, roundedCorner, roundedCorner, roundedCorner, roundedCorner, 0, 0});
- } else {
- background.setCornerRadii(new float[]{roundedCorner, roundedCorner, 0, 0, 0, 0, roundedCorner, roundedCorner});
- }
-
- if (endButtonContainer != null && centerButtonContainer != null) {
- endButtonContainer.setBackground(endButtonRoundedCorner);
- endButtonText.setTextColor(activeColor);
- centerButtonContainer.setBackground(centerButtonSharpCorner);
- centerButtonText.setTextColor(activeColor);
- startButtonContainer.setBackgroundDrawable(background);
- startButtonText.setTextColor(textColor);
- } else if (centerButtonContainer != null) {
- centerButtonContainer.setBackground(endButtonRoundedCorner);
- centerButtonText.setTextColor(activeColor);
- startButtonContainer.setBackgroundDrawable(background);
- startButtonText.setTextColor(textColor);
- } else if (endButtonContainer != null) {
- endButtonContainer.setBackground(endButtonRoundedCorner);
- endButtonText.setTextColor(activeColor);
- startButtonContainer.setBackgroundDrawable(background);
- startButtonText.setTextColor(textColor);
- } else if (endButtonContainer == null && centerButtonContainer == null) {
- background.setCornerRadii(new float[]{roundedCorner, roundedCorner, roundedCorner, roundedCorner, roundedCorner, roundedCorner, roundedCorner, roundedCorner});
- startButtonContainer.setBackgroundDrawable(background);
- startButtonText.setTextColor(textColor);
- }
-
- } else if (buttonType == CustomRadioButtonTypeGroup.CENTER) {
- centerButtonContainer.setBackgroundDrawable(background);
- centerButtonText.setTextColor(textColor);
- startButtonContainer.setBackground(startButtonRoundedCorner);
- startButtonText.setTextColor(activeColor);
- if (endButtonContainer != null) {
- endButtonContainer.setBackground(endButtonRoundedCorner);
- endButtonText.setTextColor(activeColor);
- } else {
- endButtonRoundedCorner.setColor(UiUtilities.getColorWithAlpha(activeColor, 0.1f));
- centerButtonContainer.setBackgroundDrawable(endButtonRoundedCorner);
- centerButtonText.setTextColor(textColor);
- }
-
- } else {
- if (isLayoutRtl) {
- background.setCornerRadii(new float[]{roundedCorner, roundedCorner, 0, 0, 0, 0, roundedCorner, roundedCorner});
- } else {
- background.setCornerRadii(new float[]{0, 0, roundedCorner, roundedCorner, roundedCorner, roundedCorner, 0, 0});
- }
- startButtonContainer.setBackground(startButtonRoundedCorner);
- startButtonText.setTextColor(activeColor);
- endButtonContainer.setBackgroundDrawable(background);
- endButtonText.setTextColor(textColor);
if (centerButtonContainer != null) {
- centerButtonContainer.setBackground(centerButtonSharpCorner);
centerButtonText.setTextColor(activeColor);
+ centerButtonContainer.setBackgroundColor(Color.TRANSPARENT);
}
}
}
- private static void setStartEndCenterRoundedCorner(int roundedCorner, boolean isLayoutRtl, GradientDrawable startButtonRoundedCorner, GradientDrawable endButtonRoundedCorner, GradientDrawable centerButtonSharpCorner) {
- if (isLayoutRtl) {
- startButtonRoundedCorner.setCornerRadii(new float[]{0, 0, roundedCorner, roundedCorner, roundedCorner, roundedCorner, 0, 0});
- } else {
- startButtonRoundedCorner.setCornerRadii(new float[]{roundedCorner, roundedCorner, 0, 0, 0, 0, roundedCorner, roundedCorner});
- }
- if (isLayoutRtl) {
- endButtonRoundedCorner.setCornerRadii(new float[]{roundedCorner, roundedCorner, 0, 0, 0, 0, roundedCorner, roundedCorner});
- } else {
- endButtonRoundedCorner.setCornerRadii(new float[]{0, 0, roundedCorner, roundedCorner, roundedCorner, roundedCorner, 0, 0});
- }
- centerButtonSharpCorner.setCornerRadii(new float[]{0, 0, 0, 0, 0, 0, 0, 0});
- }
-
-
public static void setupCompoundButtonDrawable(Context ctx, boolean nightMode, @ColorInt int activeColor, Drawable drawable) {
int inactiveColor = ContextCompat.getColor(ctx, nightMode ? R.color.icon_color_default_dark : R.color.icon_color_default_light);
int[][] states = new int[][]{
diff --git a/OsmAnd/src/net/osmand/plus/myplaces/GPXItemPagerAdapter.java b/OsmAnd/src/net/osmand/plus/myplaces/GPXItemPagerAdapter.java
index e712d3ca01..0b167e4c97 100644
--- a/OsmAnd/src/net/osmand/plus/myplaces/GPXItemPagerAdapter.java
+++ b/OsmAnd/src/net/osmand/plus/myplaces/GPXItemPagerAdapter.java
@@ -7,13 +7,13 @@ import android.view.LayoutInflater;
import android.view.MotionEvent;
import android.view.View;
import android.view.ViewGroup;
+import android.view.ViewGroup.MarginLayoutParams;
import android.widget.ImageView;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.appcompat.widget.SwitchCompat;
import androidx.viewpager.widget.PagerAdapter;
-import androidx.viewpager.widget.ViewPager.OnPageChangeListener;
import com.github.mikephil.charting.charts.LineChart;
import com.github.mikephil.charting.data.Entry;
@@ -24,7 +24,6 @@ import com.github.mikephil.charting.listener.ChartTouchListener.ChartGesture;
import com.github.mikephil.charting.listener.OnChartGestureListener;
import com.github.mikephil.charting.listener.OnChartValueSelectedListener;
-import net.osmand.AndroidUtils;
import net.osmand.GPXUtilities;
import net.osmand.GPXUtilities.GPXFile;
import net.osmand.GPXUtilities.GPXTrackAnalysis;
@@ -37,6 +36,7 @@ import net.osmand.plus.OsmAndFormatter;
import net.osmand.plus.OsmandApplication;
import net.osmand.plus.R;
import net.osmand.plus.UiUtilities;
+import net.osmand.plus.UiUtilities.CustomRadioButtonType;
import net.osmand.plus.helpers.AndroidUiHelper;
import net.osmand.plus.helpers.GpxUiHelper;
import net.osmand.plus.helpers.GpxUiHelper.GPXDataSetAxisType;
@@ -44,7 +44,6 @@ import net.osmand.plus.helpers.GpxUiHelper.GPXDataSetType;
import net.osmand.plus.helpers.GpxUiHelper.LineGraphType;
import net.osmand.plus.helpers.GpxUiHelper.OrderedLineDataSet;
import net.osmand.plus.track.TrackDisplayHelper;
-import net.osmand.plus.views.controls.PagerSlidingTabStrip;
import net.osmand.plus.views.controls.PagerSlidingTabStrip.CustomTabProvider;
import net.osmand.plus.views.controls.WrapContentHeightViewPager.ViewAtPositionInterface;
import net.osmand.util.Algorithms;
@@ -53,6 +52,7 @@ import net.osmand.util.MapUtils;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
+import java.util.Arrays;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
@@ -74,7 +74,6 @@ public class GPXItemPagerAdapter extends PagerAdapter implements CustomTabProvid
private GpxDisplayItem gpxItem;
private GPXTabItemType[] tabTypes;
- private PagerSlidingTabStrip tabs;
private SparseArray views = new SparseArray<>();
private SegmentActionsListener actionsListener;
@@ -82,47 +81,17 @@ public class GPXItemPagerAdapter extends PagerAdapter implements CustomTabProvid
private boolean nightMode;
- public GPXItemPagerAdapter(@NonNull final PagerSlidingTabStrip tabs,
+ public GPXItemPagerAdapter(@NonNull OsmandApplication app,
@NonNull GpxDisplayItem gpxItem,
@NonNull TrackDisplayHelper displayHelper,
- @NonNull SegmentActionsListener actionsListener,
- final boolean nightMode) {
+ boolean nightMode, @NonNull SegmentActionsListener actionsListener) {
super();
- this.tabs = tabs;
+ this.app = app;
this.gpxItem = gpxItem;
- this.displayHelper = displayHelper;
this.nightMode = nightMode;
+ this.displayHelper = displayHelper;
this.actionsListener = actionsListener;
- app = (OsmandApplication) tabs.getContext().getApplicationContext();
iconsCache = app.getUIUtilities();
-
- tabs.setOnPageChangeListener(new OnPageChangeListener() {
-
- @Override
- public void onPageSelected(int arg0) {
- UiUtilities.CustomRadioButtonTypeGroup type;
- if (arg0 == 0) {
- type = UiUtilities.CustomRadioButtonTypeGroup.START;
- } else if (arg0 == 1) {
- type = UiUtilities.CustomRadioButtonTypeGroup.CENTER;
- } else {
- type = UiUtilities.CustomRadioButtonTypeGroup.END;
- }
-
- View parent = (View) tabs.getChildAt(0);
- UiUtilities.updateCustomRadioButtonsGroup(app, parent, nightMode, type);
- }
-
- @Override
- public void onPageScrolled(int arg0, float arg1, int arg2) {
- }
-
- @Override
- public void onPageScrollStateChanged(int arg0) {
-
- }
- });
-
fetchTabTypes();
}
@@ -589,44 +558,60 @@ public class GPXItemPagerAdapter extends PagerAdapter implements CustomTabProvid
return view == object;
}
+ int singleTabLayoutId[] = {R.layout.center_button_container};
+ int doubleTabsLayoutIds[] = {R.layout.left_button_container, R.layout.right_button_container};
+ int tripleTabsLayoutIds[] = {R.layout.left_button_container, R.layout.center_button_container, R.layout.right_button_container};
+
@Override
public View getCustomTabView(@NonNull ViewGroup parent, int position) {
int layoutId;
- if (position == 0) {
- layoutId = R.layout.left_button_container;
- } else if (position == 1) {
- layoutId = R.layout.center_button_container;
+ int count = getCount();
+ if (count == 1) {
+ layoutId = singleTabLayoutId[position];
+ } else if (count == 2) {
+ layoutId = doubleTabsLayoutIds[position];
} else {
- layoutId = R.layout.right_button_container;
+ layoutId = tripleTabsLayoutIds[position];
}
View tab = LayoutInflater.from(parent.getContext()).inflate(layoutId, parent, false);
tab.setTag(tabTypes[position].name());
- deselect(tab);
return tab;
}
@Override
public void select(View tab) {
GPXTabItemType tabType = GPXTabItemType.valueOf((String) tab.getTag());
- UiUtilities.CustomRadioButtonTypeGroup type;
- if (tabType == GPXTabItemType.GPX_TAB_ITEM_GENERAL) {
- type = UiUtilities.CustomRadioButtonTypeGroup.START;
- } else if (tabType == GPXTabItemType.GPX_TAB_ITEM_ALTITUDE) {
- type = UiUtilities.CustomRadioButtonTypeGroup.CENTER;
- } else {
- type = UiUtilities.CustomRadioButtonTypeGroup.END;
- }
+ int index = Arrays.asList(tabTypes).indexOf(tabType);
View parent = (View) tab.getParent();
- UiUtilities.updateCustomRadioButtonsGroup(app, parent, nightMode, type);
-
- ViewGroup.MarginLayoutParams params = (ViewGroup.MarginLayoutParams) parent.getLayoutParams();
- int contentPadding = app.getResources().getDimensionPixelSize(R.dimen.content_padding);
- int containerMargin = app.getResources().getDimensionPixelSize(R.dimen.bottom_sheet_content_margin_small);
- AndroidUtils.setMargins(params, contentPadding, containerMargin, contentPadding, containerMargin);
+ UiUtilities.updateCustomRadioButtons(app, parent, nightMode, getCustomRadioButtonType(index));
}
@Override
public void deselect(View tab) {
+
+ }
+
+ @Override
+ public void tabStylesUpdated(View tabsContainer, int currentPosition) {
+ ViewGroup.MarginLayoutParams params = (MarginLayoutParams) tabsContainer.getLayoutParams();
+ params.height = app.getResources().getDimensionPixelSize(R.dimen.dialog_button_height);
+ tabsContainer.setLayoutParams(params);
+ UiUtilities.updateCustomRadioButtons(app, tabsContainer, nightMode, getCustomRadioButtonType(currentPosition));
+ }
+
+ private CustomRadioButtonType getCustomRadioButtonType(int index) {
+ int count = getCount();
+ CustomRadioButtonType type = CustomRadioButtonType.CENTER;
+ if (count == 2) {
+ type = index > 0 ? CustomRadioButtonType.END : CustomRadioButtonType.START;
+ } else if (count == 3) {
+ if (index == 0) {
+ type = CustomRadioButtonType.START;
+ } else if (index == 2) {
+ type = CustomRadioButtonType.END;
+ }
+ }
+ return type;
}
@Override
diff --git a/OsmAnd/src/net/osmand/plus/myplaces/SegmentGPXAdapter.java b/OsmAnd/src/net/osmand/plus/myplaces/SegmentGPXAdapter.java
index 9f2e234dcd..60141d5ccf 100644
--- a/OsmAnd/src/net/osmand/plus/myplaces/SegmentGPXAdapter.java
+++ b/OsmAnd/src/net/osmand/plus/myplaces/SegmentGPXAdapter.java
@@ -1,13 +1,11 @@
package net.osmand.plus.myplaces;
import android.content.Context;
-import android.graphics.drawable.GradientDrawable;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import androidx.annotation.NonNull;
-import androidx.core.content.ContextCompat;
import net.osmand.AndroidUtils;
import net.osmand.plus.GpxSelectionHelper.GpxDisplayItem;
@@ -22,6 +20,7 @@ import java.util.List;
public class SegmentGPXAdapter extends ArrayAdapter {
+ private OsmandApplication app;
private TrackDisplayHelper displayHelper;
private SegmentActionsListener listener;
private boolean nightMode;
@@ -31,7 +30,7 @@ public class SegmentGPXAdapter extends ArrayAdapter {
@NonNull SegmentActionsListener listener,
boolean nightMode) {
super(context, R.layout.gpx_list_item_tab_content, items);
- OsmandApplication app = (OsmandApplication) context.getApplicationContext();
+ this.app = (OsmandApplication) context.getApplicationContext();
this.displayHelper = displayHelper;
this.listener = listener;
this.nightMode = nightMode;
@@ -56,7 +55,7 @@ public class SegmentGPXAdapter extends ArrayAdapter {
WrapContentHeightViewPager pager = row.findViewById(R.id.pager);
PagerSlidingTabStrip tabLayout = row.findViewById(R.id.sliding_tabs);
- pager.setAdapter(new GPXItemPagerAdapter(tabLayout, item, displayHelper, listener, nightMode));
+ pager.setAdapter(new GPXItemPagerAdapter(app, item, displayHelper, nightMode, listener));
if (create) {
tabLayout.setViewPager(pager);
} else {
@@ -72,9 +71,8 @@ public class SegmentGPXAdapter extends ArrayAdapter {
View row = UiUtilities.getInflater(context, nightMode).inflate(R.layout.gpx_list_item_tab_content, root, false);
PagerSlidingTabStrip tabLayout = row.findViewById(R.id.sliding_tabs);
- tabLayout.setTabBackground(R.color.color_transparent);
- tabLayout.setIndicatorHeight(AndroidUtils.dpToPx(context, 0));
- tabLayout.setTextSize(AndroidUtils.spToPx(context, 12f));
+ tabLayout.setTabBackground(AndroidUtils.resolveAttribute(context, R.attr.btn_bg_border_inactive));
+ tabLayout.setIndicatorHeight(0);
tabLayout.setShouldExpand(true);
WrapContentHeightViewPager pager = row.findViewById(R.id.pager);
pager.setSwipeable(false);
diff --git a/OsmAnd/src/net/osmand/plus/track/SegmentsCard.java b/OsmAnd/src/net/osmand/plus/track/SegmentsCard.java
index 9aa7c91391..ad266fc2ab 100644
--- a/OsmAnd/src/net/osmand/plus/track/SegmentsCard.java
+++ b/OsmAnd/src/net/osmand/plus/track/SegmentsCard.java
@@ -47,7 +47,7 @@ public class SegmentsCard extends BaseCard {
WrapContentHeightViewPager pager = segmentView.findViewById(R.id.pager);
PagerSlidingTabStrip tabLayout = segmentView.findViewById(R.id.sliding_tabs);
- pager.setAdapter(new GPXItemPagerAdapter(tabLayout, displayItem, displayHelper, listener, nightMode));
+ pager.setAdapter(new GPXItemPagerAdapter(app, displayItem, displayHelper, nightMode, listener));
tabLayout.setViewPager(pager);
container.addView(segmentView);
diff --git a/OsmAnd/src/net/osmand/plus/views/controls/PagerSlidingTabStrip.java b/OsmAnd/src/net/osmand/plus/views/controls/PagerSlidingTabStrip.java
index e38a8619b0..f6d5bdd4fd 100644
--- a/OsmAnd/src/net/osmand/plus/views/controls/PagerSlidingTabStrip.java
+++ b/OsmAnd/src/net/osmand/plus/views/controls/PagerSlidingTabStrip.java
@@ -68,6 +68,7 @@ public class PagerSlidingTabStrip extends HorizontalScrollView {
public View getCustomTabView(@NonNull ViewGroup parent, int position);
public void select(View tab);
public void deselect(View tab);
+ public void tabStylesUpdated(View tabsContainer, int currentPosition);
}
public interface OnTabReselectedListener {
@@ -307,6 +308,10 @@ public class PagerSlidingTabStrip extends HorizontalScrollView {
}
}
+ public int getCurrentPosition() {
+ return currentPosition;
+ }
+
private void addTab(final int position, CharSequence title, View tabView) {
TextView textView = (TextView) tabView.findViewById(R.id.tab_title);
if (textView != null) {
@@ -332,42 +337,32 @@ public class PagerSlidingTabStrip extends HorizontalScrollView {
private void updateTabStyles() {
tabsContainer.setBackgroundResource(tabBackgroundResId);
- for (int i = 0; i < tabCount; i++) {
- View v = tabsContainer.getChildAt(i);
- v.setBackgroundResource(tabBackgroundResId);
- v.setPadding(tabPadding, v.getPaddingTop(), tabPadding, v.getPaddingBottom());
- TextView tab_title = (TextView) v.findViewById(R.id.tab_title);
+ if (pager.getAdapter() instanceof CustomTabProvider) {
+ ((CustomTabProvider) pager.getAdapter()).tabStylesUpdated(tabsContainer, currentPosition);
+ } else {
+ for (int i = 0; i < tabCount; i++) {
+ View v = tabsContainer.getChildAt(i);
+ v.setBackgroundResource(tabBackgroundResId);
+ v.setPadding(tabPadding, v.getPaddingTop(), tabPadding, v.getPaddingBottom());
- if (tab_title != null) {
- tab_title.setTextSize(TypedValue.COMPLEX_UNIT_PX, tabTextSize);
- tab_title.setTypeface(tabTypeface, pager.getCurrentItem() == i ? tabTypefaceSelectedStyle : tabTypefaceStyle);
- switch (tabSelectionType) {
- case ALPHA:
- float alpha = pager.getCurrentItem() == i ? tabTextSelectedAlpha : tabTextAlpha;
- tab_title.setAlpha(alpha);
- tab_title.setTextColor(tabTextColor);
- break;
- case SOLID_COLOR:
- tab_title.setAlpha(OPAQUE);
- tab_title.setTextColor(pager.getCurrentItem() == i ? tabTextColor : tabInactiveTextColor);
- break;
- }
-
- // setAllCaps() is only available from API 14, so the upper case is made manually if we are on a
- // pre-ICS-build
- if (textAllCaps) {
- if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.ICE_CREAM_SANDWICH) {
- tab_title.setAllCaps(true);
- } else {
- tab_title.setText(tab_title.getText().toString().toUpperCase(locale));
+ TextView tabTitle = v.findViewById(R.id.tab_title);
+ if (tabTitle != null) {
+ tabTitle.setTextSize(TypedValue.COMPLEX_UNIT_PX, tabTextSize);
+ tabTitle.setTypeface(tabTypeface, pager.getCurrentItem() == i ? tabTypefaceSelectedStyle : tabTypefaceStyle);
+ switch (tabSelectionType) {
+ case ALPHA:
+ float alpha = pager.getCurrentItem() == i ? tabTextSelectedAlpha : tabTextAlpha;
+ tabTitle.setAlpha(alpha);
+ tabTitle.setTextColor(tabTextColor);
+ break;
+ case SOLID_COLOR:
+ tabTitle.setAlpha(OPAQUE);
+ tabTitle.setTextColor(pager.getCurrentItem() == i ? tabTextColor : tabInactiveTextColor);
+ break;
+ }
+ if (textAllCaps) {
+ tabTitle.setAllCaps(true);
}
- }
- }
- if (pager.getAdapter() instanceof CustomTabProvider) {
- if (pager.getCurrentItem() == i) {
- ((CustomTabProvider) pager.getAdapter()).select(v);
- } else {
- ((CustomTabProvider) pager.getAdapter()).deselect(v);
}
}
}
@@ -558,39 +553,41 @@ public class PagerSlidingTabStrip extends HorizontalScrollView {
private void notSelected(View tab) {
if (tab != null) {
- TextView title = (TextView) tab.findViewById(R.id.tab_title);
- if (title != null) {
- title.setTypeface(tabTypeface, tabTypefaceStyle);
- switch (tabSelectionType) {
- case ALPHA:
- title.setAlpha(tabTextAlpha);
- break;
- case SOLID_COLOR:
- title.setTextColor(tabInactiveTextColor);
- break;
- }
- }
if (pager.getAdapter() instanceof CustomTabProvider) {
((CustomTabProvider) pager.getAdapter()).deselect(tab);
+ } else {
+ TextView title = tab.findViewById(R.id.tab_title);
+ if (title != null) {
+ title.setTypeface(tabTypeface, tabTypefaceStyle);
+ switch (tabSelectionType) {
+ case ALPHA:
+ title.setAlpha(tabTextAlpha);
+ break;
+ case SOLID_COLOR:
+ title.setTextColor(tabInactiveTextColor);
+ break;
+ }
+ }
}
}
}
private void selected(View tab) {
if (tab != null) {
- TextView title = (TextView) tab.findViewById(R.id.tab_title);
- if (title != null) {
- title.setTypeface(tabTypeface, tabTypefaceSelectedStyle);
- switch (tabSelectionType) {
- case ALPHA:
- title.setAlpha(tabTextSelectedAlpha);
- break;
- case SOLID_COLOR:
- title.setTextColor(tabTextColor);
- break;
- }
- if (pager.getAdapter() instanceof CustomTabProvider) {
- ((CustomTabProvider) pager.getAdapter()).select(tab);
+ if (pager.getAdapter() instanceof CustomTabProvider) {
+ ((CustomTabProvider) pager.getAdapter()).select(tab);
+ } else {
+ TextView title = tab.findViewById(R.id.tab_title);
+ if (title != null) {
+ title.setTypeface(tabTypeface, tabTypefaceSelectedStyle);
+ switch (tabSelectionType) {
+ case ALPHA:
+ title.setAlpha(tabTextSelectedAlpha);
+ break;
+ case SOLID_COLOR:
+ title.setTextColor(tabTextColor);
+ break;
+ }
}
}
}