Migration to Material Components theme and style.

New night theme mainly white on black.
Fixes #1122.
Fixes #957.
This commit is contained in:
Román Ginés
2022-02-06 20:33:17 +01:00
committed by Román Martínez
parent 72f7b12da6
commit 79e45f7aea
49 changed files with 892 additions and 829 deletions
+1
View File
@@ -42,6 +42,7 @@ captures/
.idea/dictionaries
.idea/libraries
.idea/caches
.idea/misc.xml
# IntelliJ IDEA
-24
View File
@@ -1,24 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="DesignSurface">
<option name="filePathToZoomLevelMap">
<map>
<entry key="src/main/res/drawable/ic_activity_bike_24dp.xml" value="0.1765" />
<entry key="src/main/res/drawable/ic_activity_sailing_24dp.xml" value="0.1935" />
<entry key="src/main/res/drawable/ic_activity_snowboarding_24dp.xml" value="0.1935" />
<entry key="src/main/res/drawable/ic_activity_swimming_24dp.xml" value="0.1935" />
<entry key="src/main/res/drawable/ic_activity_swimming_open_24dp.xml" value="0.1935" />
<entry key="src/main/res/drawable/ic_activity_workout_24dp.xml" value="0.1935" />
<entry key="src/main/res/menu/aggregated_statistics.xml" value="0.10208333333333333" />
<entry key="src/main/res/xml/settings_gps.xml" value="0.22604166666666667" />
<entry key="src/main/res/xml/settings_sensors.xml" value="0.2101851851851852" />
</map>
</option>
</component>
<component name="ProjectRootManager" version="2" languageLevel="JDK_11" default="true" project-jdk-name="1.8" project-jdk-type="JavaSDK">
<output url="file://$PROJECT_DIR$/build/classes" />
</component>
<component name="ProjectType">
<option name="id" value="Android" />
</component>
</project>
@@ -120,10 +120,10 @@ public class StatisticsAdapter extends RecyclerView.Adapter<RecyclerView.ViewHol
return;
}
this.value.setText(statisticData.hasValue() ? statisticData.getValue() : context.getString(R.string.value_unknown));
this.value.setTextAppearance(context, statisticData.getField().isPrimary() ? R.style.StatsPrimaryValue : R.style.StatsSecondaryValue);
this.value.setTextAppearance(context, statisticData.getField().isPrimary() ? R.style.TextAppearance_OpenTracks_PrimaryValue : R.style.TextAppearance_OpenTracks_SecondaryValue);
this.unit.setText(statisticData.getUnit());
this.descMain.setText(statisticData.getField().getTitle());
this.descMain.setTextAppearance(context, statisticData.getField().isPrimary() ? R.style.StatsPrimaryLabel : R.style.StatsSecondaryLabel);
this.descMain.setTextAppearance(context, statisticData.getField().isPrimary() ? R.style.TextAppearance_OpenTracks_PrimaryHeader : R.style.TextAppearance_OpenTracks_SecondaryHeader);
if (statisticData.hasDescription()) {
this.descSecondary.setVisibility(View.VISIBLE);
this.descSecondary.setText(statisticData.getDescription());
@@ -147,8 +147,8 @@ public class StatisticsAdapter extends RecyclerView.Adapter<RecyclerView.ViewHol
if (statisticData == null) {
return;
}
this.value.setTextAppearance(context, statisticData.getField().isPrimary() ? R.style.StatsPrimaryValue : R.style.StatsSecondaryValue);
this.descMain.setTextAppearance(context, statisticData.getField().isPrimary() ? R.style.StatsPrimaryLabel : R.style.StatsSecondaryLabel);
this.value.setTextAppearance(context, statisticData.getField().isPrimary() ? R.style.TextAppearance_OpenTracks_PrimaryValue : R.style.TextAppearance_OpenTracks_SecondaryValue);
this.descMain.setTextAppearance(context, statisticData.getField().isPrimary() ? R.style.TextAppearance_OpenTracks_PrimaryHeader : R.style.TextAppearance_OpenTracks_SecondaryHeader);
}
}
@@ -78,7 +78,7 @@ class ChooseActivityTypeImageAdapter extends BaseAdapter {
}
if (position == selected) {
imageView.setBackgroundColor(ContextCompat.getColor(parent.getContext(), R.color.colorAccent));
imageView.setBackgroundColor(ContextCompat.getColor(parent.getContext(), R.color.opentracks_secondary_color));
} else {
imageView.setBackgroundColor(Color.TRANSPARENT);
}
@@ -2,8 +2,6 @@ package de.dennisguse.opentracks.settings;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ScrollView;
import androidx.annotation.NonNull;
@@ -17,6 +15,7 @@ import androidx.recyclerview.widget.RecyclerView;
import java.util.stream.IntStream;
import de.dennisguse.opentracks.AbstractActivity;
import de.dennisguse.opentracks.ui.util.ArrayAdapterFilterDisabled;
import de.dennisguse.opentracks.R;
import de.dennisguse.opentracks.databinding.ActivitySettingsCustomLayoutBinding;
import de.dennisguse.opentracks.ui.customRecordingLayout.DataField;
@@ -80,23 +79,16 @@ public class SettingsCustomLayoutEditActivity extends AbstractActivity implement
itemTouchHelper.attachToRecyclerView(recyclerViewVisible);
// Spinner with items per row.
ArrayAdapter<Integer> spinnerAdapter = new ArrayAdapter<>(this,
ArrayAdapterFilterDisabled<Integer> rowsOptionAdapter = new ArrayAdapterFilterDisabled<>(this,
android.R.layout.simple_spinner_dropdown_item,
IntStream.of(getResources().getIntArray(R.array.stats_custom_layout_fields_columns_per_row)).boxed().toArray(Integer[]::new));
viewBinding.spinnerOptions.setAdapter(spinnerAdapter);
viewBinding.spinnerOptions.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
numColumns = position + 1;
gridLayoutManager.setSpanCount(numColumns);
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
viewBinding.rowsOptions.setAdapter(rowsOptionAdapter);
viewBinding.rowsOptions.setOnItemClickListener((parent, view, position, id) -> {
numColumns = position + 1;
gridLayoutManager.setSpanCount(numColumns);
});
viewBinding.spinnerOptions.setSelection(numColumns - 1);
viewBinding.rowsOptions.setText(rowsOptionAdapter.getItem(numColumns - 1).toString(), false);
// Recycler view with not visible stats.
layoutFieldsHidden = StatisticsUtils.filterVisible(layout, false);
@@ -5,11 +5,10 @@ import android.content.Context;
import android.os.Bundle;
import android.os.Parcel;
import android.os.Parcelable;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.CheckBox;
import android.widget.DatePicker;
import android.widget.GridLayout;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
@@ -17,6 +16,8 @@ import androidx.appcompat.app.AlertDialog;
import androidx.fragment.app.DialogFragment;
import androidx.fragment.app.FragmentManager;
import com.google.android.material.button.MaterialButton;
import com.google.android.material.button.MaterialButtonToggleGroup;
import com.google.android.material.textfield.TextInputEditText;
import java.time.LocalDate;
@@ -61,17 +62,17 @@ public class FilterDialogFragment extends DialogFragment {
LayoutInflater inflater = LayoutInflater.from(getActivity());
View layout = inflater.inflate(R.layout.fragment_filter_dialog, null, false);
GridLayout itemsLayout = layout.findViewById(R.id.filter_items);
MaterialButtonToggleGroup itemsLayout = layout.findViewById(R.id.filter_items);
builder.setView(layout);
for (FilterItem item : filterItems) {
View view = inflater.inflate(R.layout.fragment_filter_dialog_item, null);
CheckBox checkBox = view.findViewById(R.id.filter_dialog_check_button);
checkBox.setText(item.value);
checkBox.setChecked(item.isChecked);
checkBox.setTag(item.id);
checkBox.setOnClickListener(v -> item.isChecked = !item.isChecked);
MaterialButton button = view.findViewById(R.id.filter_dialog_check_button);
button.setText(item.value);
button.setChecked(item.isChecked);
button.setTag(item.id);
button.setOnClickListener(v -> item.isChecked = !item.isChecked);
itemsLayout.addView(view);
}
@@ -43,8 +43,8 @@ public class SettingsCustomLayoutEditAdapter extends RecyclerView.Adapter<Recycl
viewHolder.title.setText(field.getTitle());
viewHolder.value.setText(StatisticsUtils.emptyValue(context, field.getKey()));
viewHolder.title.setTextAppearance(context, field.isVisible() ? (field.isPrimary() ? R.style.StatsPrimaryLabel : R.style.StatsSecondaryLabel) : R.style.StatsLabelHidden);
viewHolder.value.setTextAppearance(context, field.isVisible() ? (field.isPrimary() ? R.style.StatsPrimaryValue : R.style.StatsSecondaryValue) : R.style.StatsValueHidden);
viewHolder.title.setTextAppearance(context, field.isVisible() ? (field.isPrimary() ? R.style.TextAppearance_OpenTracks_PrimaryHeader : R.style.TextAppearance_OpenTracks_SecondaryHeader) : R.style.TextAppearance_OpenTracks_HiddenHeader);
viewHolder.value.setTextAppearance(context, field.isVisible() ? (field.isPrimary() ? R.style.TextAppearance_OpenTracks_PrimaryValue : R.style.TextAppearance_OpenTracks_SecondaryValue) : R.style.TextAppearance_OpenTracks_HiddenValue);
viewHolder.statusIcon.setVisibility(field.isVisible() ? View.GONE : View.VISIBLE);
viewHolder.statusIcon.setImageDrawable(AppCompatResources.getDrawable(context, R.drawable.ic_baseline_visibility_off_24));
viewHolder.moveIcon.setVisibility(field.isVisible() ? View.VISIBLE : View.GONE);
@@ -5,7 +5,6 @@ import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.TextView;
@@ -33,6 +32,7 @@ public class IntervalsFragment extends Fragment {
private static final String FROM_TOP_TO_BOTTOM_KEY = "fromTopToBottom";
private static final String TRACK_ID_KEY = "trackId";
private static final String SELECTED_INTERVAL_KEY = "selectedIntervalKey";
private IntervalStatisticsModel viewModel;
protected IntervalStatisticsAdapter.StackMode stackModeListView;
@@ -41,7 +41,7 @@ public class IntervalsFragment extends Fragment {
private Track.Id trackId;
private boolean metricUnits;
private IntervalStatisticsAdapter adapter;
private ArrayAdapter<IntervalStatisticsModel.IntervalOption> spinnerAdapter;
private ArrayAdapter<IntervalStatisticsModel.IntervalOption> intervalsAdapter;
private boolean isReportSpeed;
@@ -50,8 +50,8 @@ public class IntervalsFragment extends Fragment {
protected final SharedPreferences.OnSharedPreferenceChangeListener sharedPreferenceChangeListener = (sharedPreferences, key) -> {
if (PreferencesUtils.isKey(R.string.stats_units_key, key) || PreferencesUtils.isKey(R.string.stats_rate_key, key)) {
updateIntervals(PreferencesUtils.isMetricUnits(), selectedInterval);
if (spinnerAdapter != null) {
spinnerAdapter.notifyDataSetChanged();
if (intervalsAdapter != null) {
intervalsAdapter.notifyDataSetChanged();
}
}
};
@@ -76,6 +76,15 @@ public class IntervalsFragment extends Fragment {
super.onCreate(savedInstanceState);
stackModeListView = getArguments().getBoolean(FROM_TOP_TO_BOTTOM_KEY, true) ? IntervalStatisticsAdapter.StackMode.STACK_FROM_TOP : IntervalStatisticsAdapter.StackMode.STACK_FROM_BOTTOM;
trackId = getArguments().getParcelable(TRACK_ID_KEY);
if (savedInstanceState != null) {
selectedInterval = (IntervalStatisticsModel.IntervalOption) savedInstanceState.getSerializable(SELECTED_INTERVAL_KEY);
}
}
@Override
public void onSaveInstanceState(@NonNull Bundle outState) {
super.onSaveInstanceState(outState);
outState.putSerializable(SELECTED_INTERVAL_KEY, selectedInterval);
}
@Override
@@ -93,7 +102,7 @@ public class IntervalsFragment extends Fragment {
// TODO handle empty view: before we did viewBinding.intervalList.setEmptyView(viewBinding.intervalListEmptyView);
viewBinding.intervalList.setAdapter(adapter);
spinnerAdapter = new ArrayAdapter<>(getContext(), android.R.layout.simple_spinner_dropdown_item, IntervalStatisticsModel.IntervalOption.values()) {
intervalsAdapter = new ArrayAdapter<>(getContext(), android.R.layout.simple_spinner_dropdown_item, IntervalStatisticsModel.IntervalOption.values()) {
@NonNull
@Override
public View getView(int position, @Nullable View convertView, @NonNull ViewGroup parent) {
@@ -112,17 +121,13 @@ public class IntervalsFragment extends Fragment {
}
};
viewBinding.spinnerIntervals.setAdapter(spinnerAdapter);
viewBinding.spinnerIntervals.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {
updateIntervals(metricUnits, IntervalStatisticsModel.IntervalOption.values()[i]);
}
viewBinding.intervalsDropdown.setAdapter(intervalsAdapter);
viewBinding.intervalsDropdown.setOnItemClickListener((parent, view1, position, id) -> updateIntervals(metricUnits, IntervalStatisticsModel.IntervalOption.values()[position]));
@Override
public void onNothingSelected(AdapterView<?> adapterView) {
}
});
viewBinding.intervalsDropdown.setText(
getContext().getString(R.string.value_integer_kilometer, Integer.parseInt(selectedInterval != null ? selectedInterval.toString() : IntervalStatisticsModel.IntervalOption.values()[0].toString())),
false
);
}
@Override
@@ -173,6 +178,7 @@ public class IntervalsFragment extends Fragment {
if (viewModel == null) {
return;
}
viewBinding.intervalRate.setText(isReportSpeed ? getString(R.string.stats_speed) : getString(R.string.stats_pace));
LiveData<List<IntervalStatistics.Interval>> liveData = viewModel.getIntervalStats(trackId, metricUnits, selectedInterval);
liveData.observe(getActivity(), intervalList -> adapter.swapData(intervalList, metricUnits, isReportSpeed));
@@ -0,0 +1,35 @@
package de.dennisguse.opentracks.ui.util;
import android.content.Context;
import android.widget.ArrayAdapter;
import android.widget.Filter;
import androidx.annotation.NonNull;
// https://github.com/material-components/material-components-android/issues/1464
public class ArrayAdapterFilterDisabled<T> extends ArrayAdapter<T> {
public ArrayAdapterFilterDisabled(@NonNull Context context, int resource, @NonNull T[] objects) {
super(context, resource, objects);
}
@NonNull
@Override
public Filter getFilter() {
return new NeverFilter();
}
private class NeverFilter extends Filter {
protected FilterResults performFiltering(CharSequence prefix) {
return new FilterResults();
}
protected void publishResults(CharSequence constraint, FilterResults results) {
if (ArrayAdapterFilterDisabled.this.getCount() > 0) {
notifyDataSetChanged();
} else {
notifyDataSetInvalidated();
}
}
}
}
@@ -0,0 +1,22 @@
package de.dennisguse.opentracks.ui.util;
import android.content.Context;
import android.util.AttributeSet;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import com.google.android.material.textfield.MaterialAutoCompleteTextView;
// https://github.com/material-components/material-components-android/issues/1464
public class AutoCompleteTextViewForDropdown extends MaterialAutoCompleteTextView {
public AutoCompleteTextViewForDropdown(@NonNull final Context context, @Nullable final AttributeSet attributeSet) {
super(context, attributeSet);
}
@Override
public boolean getFreezesText() {
return false;
}
}
@@ -17,11 +17,9 @@
package de.dennisguse.opentracks.ui.util;
import android.content.Context;
import android.view.Gravity;
import android.view.View;
import android.view.ViewGroup.LayoutParams;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;
import java.time.OffsetDateTime;
@@ -77,11 +75,9 @@ public class ListItemUtils {
TextView timeDistanceTextView = view.findViewById(R.id.list_item_time_distance);
String timeDistanceText;
if (isRecording) {
timeDistanceTextView.setTextColor(context.getResources().getColor(isPaused ? android.R.color.white : R.color.recording_text));
timeDistanceText = context.getString(isPaused ? R.string.generic_paused : R.string.generic_recording);
} else {
// Match list_item_time_distance in list_item.xml
timeDistanceTextView.setTextAppearance(context, R.style.TextSmall);
timeDistanceText = getTimeDistance(totalTime, totalDistance);
if (markerCount > 0) {
timeDistanceText += " \u2027";
@@ -132,10 +128,6 @@ public class ListItemUtils {
timeDistanceTextView.setSingleLine(true);
setTextView(context, categoryDescriptionTextView, categoryDescription, hasPhoto);
}
// Adjust iconImageView layout gravity
LinearLayout.LayoutParams params = (LinearLayout.LayoutParams) iconImageView.getLayoutParams();
params.gravity = timeDistanceTextView.getVisibility() == View.GONE && markerCountIcon.getVisibility() == View.GONE ? Gravity.TOP : Gravity.CENTER_VERTICAL;
}
/**
@@ -42,14 +42,14 @@ public class ThemeUtils {
}
public static int getFontSizeSmallInPx(Context context) {
TypedArray typedArray = context.obtainStyledAttributes(R.style.TextSmall, new int[]{android.R.attr.textSize});
TypedArray typedArray = context.obtainStyledAttributes(R.style.TextAppearance_MaterialComponents_Body2, new int[]{android.R.attr.textSize});
int fontSize = typedArray.getDimensionPixelSize(0, 12);
typedArray.recycle();
return fontSize;
}
public static int getFontSizeMediumInPx(Context context) {
TypedArray typedArray = context.obtainStyledAttributes(R.style.TextMedium, new int[]{android.R.attr.textSize});
TypedArray typedArray = context.obtainStyledAttributes(R.style.TextAppearance_MaterialComponents_Body1, new int[]{android.R.attr.textSize});
int fontSize = typedArray.getDimensionPixelSize(0, 15);
typedArray.recycle();
return fontSize;
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@color/colorAccentTransparent" android:state_activated="true" />
<item android:drawable="@color/opentracks_secondary_transparent" android:state_activated="true" />
<item android:drawable="@android:color/transparent" />
</selector>
@@ -38,17 +38,17 @@ limitations under the License.
<TextView
android:id="@+id/controller_total_time"
style="@style/TextSmall"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
style="?attr/textAppearanceSubtitle2"
android:layout_centerInParent="true"
android:textColor="@android:color/white" />
<TextView
android:id="@+id/controller_status"
style="@style/TextMicro"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
style="?attr/textAppearanceSubtitle2"
android:layout_above="@id/controller_total_time"
android:layout_centerHorizontal="true"
android:singleLine="true" />
+1 -1
View File
@@ -89,7 +89,7 @@ limitations under the License.
android:layout_weight="24">
<TextView
style="@style/TextLarge"
style="?attr/textAppearanceHeadline6"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/track_list_empty_message" />
+12 -8
View File
@@ -32,54 +32,55 @@
<TextView
android:id="@+id/about_text_description"
style="@style/TextMedium"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:textAppearance="?attr/textAppearanceSubtitle1"
android:gravity="center"
android:padding="12dp" />
</LinearLayout>
<View style="@style/StatsHorizontalLine" />
<View style="@style/HorizontalLine" />
<TextView
android:id="@+id/about_text_version_name"
style="@style/TextSmall"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textAppearance="?attr/textAppearanceSubtitle1"
android:gravity="center"
android:padding="6dp" />
<TextView
android:id="@+id/about_text_version_code"
style="@style/TextSmall"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textAppearance="?attr/textAppearanceBody1"
android:gravity="center"
android:padding="6dp" />
<TextView
android:id="@+id/about_app_url"
style="@style/TextSmall"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textAppearance="?attr/textAppearanceBody1"
android:autoLink="web"
android:gravity="center"
android:padding="6dp" />
<TextView
style="@style/TextSmall"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textAppearance="?attr/textAppearanceBody1"
android:gravity="center"
android:linksClickable="true"
android:padding="6dp"
android:text="@string/about_history" />
<View style="@style/StatsHorizontalLine" />
<View style="@style/HorizontalLine" />
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textAppearance="?attr/textAppearanceBody1"
android:gravity="center"
android:padding="12dp"
android:text="@string/about_third_party_data" />
@@ -87,15 +88,17 @@
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textAppearance="?attr/textAppearanceBody1"
android:gravity="center"
android:padding="12dp"
android:text="@string/third_party_data" />
<View style="@style/StatsHorizontalLine" />
<View style="@style/HorizontalLine" />
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textAppearance="?attr/textAppearanceSubtitle1"
android:gravity="center"
android:padding="12dp"
android:text="@string/about_libraries" />
@@ -103,6 +106,7 @@
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textAppearance="?attr/textAppearanceBody1"
android:gravity="center"
android:linksClickable="true"
android:text="@string/third_party_libraries" />
@@ -7,27 +7,20 @@
<include layout="@layout/toolbar" />
<LinearLayout
<com.google.android.material.textfield.TextInputLayout
android:id="@+id/rows_options_layout"
style="@style/Widget.MaterialComponents.TextInputLayout.FilledBox.ExposedDropdownMenu"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:layout_marginEnd="8dp"
android:orientation="horizontal">
android:hint="@string/settings_recording_customize_layout_select_columns">
<TextView
style="@style/TextMediumPrimary"
android:layout_width="wrap_content"
<de.dennisguse.opentracks.ui.util.AutoCompleteTextViewForDropdown
android:id="@+id/rows_options"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginEnd="16dp"
android:text="@string/settings_recording_customize_layout_select_columns" />
android:inputType="none" />
<Spinner
android:id="@+id/spinner_options"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center" />
</LinearLayout>
</com.google.android.material.textfield.TextInputLayout>
<androidx.core.widget.NestedScrollView
android:id="@+id/scroll_view"
@@ -22,6 +22,7 @@
android:id="@+id/custom_layout_list_input_layout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox"
app:errorEnabled="true"
android:layout_margin="16dp">
@@ -39,17 +40,22 @@
android:id="@+id/custom_layout_list_bottom_bar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:gravity="center_vertical"
android:layout_margin="16dp"
android:gravity="end"
android:orientation="horizontal">
<Button
<com.google.android.material.button.MaterialButton
android:id="@+id/custom_layout_list_cancel_button"
style="@style/BottomButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
style="@style/Widget.MaterialComponents.Button.TextButton"
android:text="@android:string/cancel" />
<Button
<com.google.android.material.button.MaterialButton
android:id="@+id/custom_layout_list_ok_button"
style="@style/BottomButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:enabled="false"
android:text="@android:string/ok" />
</LinearLayout>
+1 -1
View File
@@ -13,7 +13,7 @@
<TextView
android:id="@+id/aggregated_stats_empty_view"
style="@style/TextLarge"
style="?attr/textAppearanceHeadline4"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:padding="16dp"
@@ -4,6 +4,9 @@
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingTop="8dp"
android:paddingEnd="8dp"
android:paddingStart="8dp"
android:paddingBottom="24dp">
<!-- Guidelines -->
@@ -33,8 +36,7 @@
android:id="@+id/aggregated_stats_sport_icon"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:layout_marginTop="16dp"
app:layout_constraintEnd_toStartOf="@id/aggregated_stats_type_label"
app:layout_constraintStart_toStartOf="@id/guideline1"
app:layout_constraintTop_toTopOf="parent"
app:tint="?android:textColorPrimary"
@@ -42,10 +44,11 @@
<TextView
android:id="@+id/aggregated_stats_type_label"
style="@style/LargeLabel"
android:layout_marginStart="16dp"
style="@style/TextAppearance.OpenTracks.PrimaryHeader"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="0dp"
android:layout_marginBottom="0dp"
android:layout_marginStart="16dp"
app:layout_constraintBottom_toBottomOf="@+id/aggregated_stats_sport_icon"
app:layout_constraintStart_toEndOf="@+id/aggregated_stats_sport_icon"
app:layout_constraintTop_toTopOf="@+id/aggregated_stats_sport_icon"
@@ -53,10 +56,11 @@
<TextView
android:id="@+id/aggregated_stats_num_tracks"
style="@style/LargeLabel"
android:layout_marginStart="4dp"
style="@style/TextAppearance.OpenTracks.PrimaryHeader"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="0dp"
android:layout_marginBottom="0dp"
android:layout_marginStart="4dp"
app:layout_constraintBottom_toBottomOf="@+id/aggregated_stats_type_label"
app:layout_constraintStart_toEndOf="@+id/aggregated_stats_type_label"
app:layout_constraintTop_toTopOf="@+id/aggregated_stats_type_label"
@@ -65,8 +69,9 @@
<!-- Distance -->
<TextView
android:id="@+id/aggregated_stats_distance"
style="@style/StatsPrimaryValue"
android:layout_marginTop="16dp"
style="@style/TextAppearance.OpenTracks.PrimaryValue"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_constraintEnd_toStartOf="@id/aggregated_stats_distance_unit"
app:layout_constraintHorizontal_chainStyle="packed"
app:layout_constraintStart_toEndOf="@id/guideline1"
@@ -76,8 +81,9 @@
<TextView
android:id="@+id/aggregated_stats_distance_unit"
style="@style/StatsUnit"
android:singleLine="true"
style="@style/TextAppearance.OpenTracks.PrimaryUnit"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_constraintBottom_toBottomOf="@+id/aggregated_stats_distance"
app:layout_constraintEnd_toEndOf="@id/guideline2"
app:layout_constraintStart_toEndOf="@+id/aggregated_stats_distance"
@@ -86,9 +92,9 @@
<!-- Time -->
<TextView
android:id="@+id/aggregated_stats_time"
style="@style/StatsPrimaryValue"
android:layout_marginTop="16dp"
android:layout_marginEnd="16dp"
style="@style/TextAppearance.OpenTracks.PrimaryValue"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_constraintEnd_toEndOf="@id/guideline3"
app:layout_constraintStart_toStartOf="@+id/guideline2"
app:layout_constraintTop_toBottomOf="@+id/aggregated_stats_sport_icon"
@@ -97,8 +103,9 @@
<!-- Avg. rate -->
<TextView
android:id="@+id/aggregated_stats_avg_rate"
style="@style/StatsSmallValue"
android:layout_marginTop="24dp"
style="@style/TextAppearance.OpenTracks.SecondaryValue"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_constraintEnd_toStartOf="@+id/aggregated_stats_avg_rate_unit"
app:layout_constraintHorizontal_chainStyle="packed"
app:layout_constraintStart_toEndOf="@id/guideline1"
@@ -107,7 +114,9 @@
<TextView
android:id="@+id/aggregated_stats_avg_rate_unit"
style="@style/StatsUnit"
style="@style/TextAppearance.OpenTracks.PrimaryUnit"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_constraintBottom_toBottomOf="@+id/aggregated_stats_avg_rate"
app:layout_constraintEnd_toEndOf="@id/guideline2"
app:layout_constraintStart_toEndOf="@+id/aggregated_stats_avg_rate"
@@ -115,8 +124,9 @@
<TextView
android:id="@+id/aggregated_stats_avg_rate_label"
style="@style/StatsTinyLabel"
android:singleLine="true"
style="@style/TextAppearance.OpenTracks.SecondaryHeader"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_constrainedWidth="true"
app:layout_constraintEnd_toEndOf="@id/guideline2"
app:layout_constraintStart_toEndOf="@id/guideline1"
@@ -126,8 +136,9 @@
<!-- Max. rate -->
<TextView
android:id="@+id/aggregated_stats_max_rate"
style="@style/StatsSmallValue"
android:layout_marginTop="24dp"
style="@style/TextAppearance.OpenTracks.SecondaryValue"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_constraintEnd_toStartOf="@+id/aggregated_stats_max_rate_unit"
app:layout_constraintHorizontal_chainStyle="packed"
app:layout_constraintStart_toEndOf="@id/guideline2"
@@ -136,7 +147,9 @@
<TextView
android:id="@+id/aggregated_stats_max_rate_unit"
style="@style/StatsUnit"
style="@style/TextAppearance.OpenTracks.PrimaryUnit"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_constraintBottom_toBottomOf="@+id/aggregated_stats_max_rate"
app:layout_constraintEnd_toStartOf="@id/guideline3"
app:layout_constraintStart_toEndOf="@+id/aggregated_stats_max_rate"
@@ -144,8 +157,9 @@
<TextView
android:id="@+id/aggregated_stats_max_rate_label"
style="@style/StatsTinyLabel"
android:singleLine="true"
style="@style/TextAppearance.OpenTracks.SecondaryHeader"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_constrainedWidth="true"
app:layout_constraintEnd_toStartOf="@id/guideline3"
app:layout_constraintStart_toEndOf="@id/guideline2"
+2 -2
View File
@@ -39,9 +39,9 @@ limitations under the License.
<TextView
android:id="@+id/controller_total_time"
style="@style/TextSmall"
android:layout_width="match_parent"
android:layout_height="wrap_content"
style="?attr/textAppearanceSubtitle2"
android:layout_alignParentStart="true"
android:layout_centerVertical="true"
android:gravity="center"
@@ -50,9 +50,9 @@ limitations under the License.
<TextView
android:id="@+id/controller_status"
style="@style/TextMicro"
android:layout_width="match_parent"
android:layout_height="wrap_content"
style="?attr/textAppearanceSubtitle2"
android:layout_above="@id/controller_total_time"
android:layout_alignParentStart="true"
android:gravity="center"
+2 -2
View File
@@ -3,7 +3,7 @@
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
style="@style/StatsCardView">
style="@style/OpenTracksCardView">
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
@@ -16,7 +16,7 @@
android:layout_width="0dp"
android:layout_height="wrap_content"
tools:text="Profile/Custom Layout Title"
style="@style/LargeLabel"
style="@style/TextAppearance.OpenTracks.PrimaryHeader"
android:layout_margin="8dp"
app:layout_constraintHorizontal_chainStyle="packed"
app:layout_constraintStart_toStartOf="parent"
+1 -1
View File
@@ -3,7 +3,7 @@
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
style="@style/StatsCardView">
style="@style/OpenTracksCardView">
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
+38 -14
View File
@@ -28,9 +28,9 @@
<TextView
android:id="@+id/export_progress_done"
style="@style/TextMediumPrimary"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
style="?attr/textAppearanceSubtitle1"
android:layout_marginStart="24dp"
android:layout_marginTop="48dp"
app:layout_constraintEnd_toStartOf="@id/export_progress_slash"
@@ -41,9 +41,9 @@
<TextView
android:id="@+id/export_progress_slash"
style="@style/TextMediumPrimary"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
style="?attr/textAppearanceSubtitle1"
android:text="@string/generic_separator_done_total"
app:layout_constraintBottom_toBottomOf="@id/export_progress_done"
app:layout_constraintEnd_toStartOf="@id/export_progress_total"
@@ -52,9 +52,9 @@
<TextView
android:id="@+id/export_progress_total"
style="@style/TextMediumPrimary"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
style="?attr/textAppearanceSubtitle1"
android:layout_marginEnd="24dp"
app:layout_constraintBottom_toBottomOf="@id/export_progress_slash"
app:layout_constraintEnd_toEndOf="parent"
@@ -62,9 +62,8 @@
app:layout_constraintTop_toTopOf="@id/export_progress_slash"
tools:text="10" />
<ProgressBar
<com.google.android.material.progressindicator.LinearProgressIndicator
android:id="@+id/export_progress_bar"
style="@style/ProgressBar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="24dp"
@@ -79,7 +78,11 @@
<!-- Tracks exported (new tracks) -->
<TextView
android:id="@+id/export_progress_summary_new_msg"
style="@style/TextImportExportSummaryStart"
android:layout_width="0dp"
android:layout_height="wrap_content"
style="?attr/textAppearanceSubtitle1"
android:gravity="end"
android:layout_margin="16dp"
android:text="@string/export_progress_summary_new_msg"
app:layout_constraintEnd_toEndOf="@id/guideline_vertical_half"
app:layout_constraintStart_toStartOf="parent"
@@ -87,7 +90,9 @@
<TextView
android:id="@+id/export_progress_summary_new"
style="@style/TextImportExportSummaryEnd"
android:layout_width="0dp"
android:layout_height="wrap_content"
style="?attr/textAppearanceSubtitle1"
app:layout_constraintBottom_toBottomOf="@id/export_progress_summary_new_msg"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@id/guideline_vertical_half"
@@ -112,7 +117,11 @@
<!-- Tracks overwritten -->
<TextView
android:id="@+id/export_progress_summary_overwrite_msg"
style="@style/TextImportExportSummaryStart"
android:layout_width="0dp"
android:layout_height="wrap_content"
style="?attr/textAppearanceSubtitle1"
android:gravity="end"
android:layout_margin="16dp"
android:text="@string/export_progress_summary_overwrite_msg"
app:layout_constraintEnd_toEndOf="@id/guideline_vertical_half"
app:layout_constraintStart_toStartOf="parent"
@@ -120,7 +129,9 @@
<TextView
android:id="@+id/export_progress_summary_overwrite"
style="@style/TextImportExportSummaryEnd"
android:layout_width="0dp"
android:layout_height="wrap_content"
style="?attr/textAppearanceSubtitle1"
app:layout_constraintBottom_toBottomOf="@id/export_progress_summary_overwrite_msg"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@id/guideline_vertical_half"
@@ -145,7 +156,11 @@
<!-- Tracks skipped -->
<TextView
android:id="@+id/export_progress_summary_skip_msg"
style="@style/TextImportExportSummaryStart"
android:layout_width="0dp"
android:layout_height="wrap_content"
style="?attr/textAppearanceSubtitle1"
android:gravity="end"
android:layout_margin="16dp"
android:text="@string/export_progress_summary_skip_msg"
app:layout_constraintEnd_toEndOf="@id/guideline_vertical_half"
app:layout_constraintStart_toStartOf="parent"
@@ -153,7 +168,9 @@
<TextView
android:id="@+id/export_progress_summary_skip"
style="@style/TextImportExportSummaryEnd"
android:layout_width="0dp"
android:layout_height="wrap_content"
style="?attr/textAppearanceSubtitle1"
app:layout_constraintBottom_toBottomOf="@id/export_progress_summary_skip_msg"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@id/guideline_vertical_half"
@@ -178,7 +195,11 @@
<!-- Tracks errors -->
<TextView
android:id="@+id/export_progress_summary_errors_msg"
style="@style/TextImportExportSummaryStart"
android:layout_width="0dp"
android:layout_height="wrap_content"
style="?attr/textAppearanceSubtitle1"
android:gravity="end"
android:layout_margin="16dp"
android:text="@string/export_progress_summary_errors_msg"
app:layout_constraintEnd_toEndOf="@id/guideline_vertical_half"
app:layout_constraintStart_toStartOf="parent"
@@ -186,7 +207,9 @@
<TextView
android:id="@+id/export_progress_summary_errors"
style="@style/TextImportExportSummaryEnd"
android:layout_width="0dp"
android:layout_height="wrap_content"
style="?attr/textAppearanceSubtitle1"
app:layout_constraintBottom_toBottomOf="@id/export_progress_summary_errors_msg"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@id/guideline_vertical_half"
@@ -224,9 +247,9 @@
<TextView
android:id="@+id/export_progress_alert_msg"
style="@style/TextMediumPrimary"
android:layout_width="0dp"
android:layout_height="wrap_content"
style="?attr/textAppearanceSubtitle1"
android:layout_marginTop="48dp"
android:layout_marginEnd="24dp"
android:layout_marginBottom="24dp"
@@ -276,6 +299,7 @@
android:text="@string/generic_overwrite"
android:visibility="gone"
tools:visibility="visible"/>
</LinearLayout>
</LinearLayout>
+88 -88
View File
@@ -1,106 +1,106 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:orientation="vertical">
xmlns:tools="http://schemas.android.com/tools">
<ScrollView style="@style/ScrollView.WithBottomButtons">
<androidx.constraintlayout.widget.ConstraintLayout
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="8dp">
<com.google.android.material.button.MaterialButtonToggleGroup
android:id="@+id/filter_items"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="8dp">
android:padding="8dp"
android:orientation="vertical"
app:singleSelection="false"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintBottom_toTopOf="@id/filter_date_from" />
<GridLayout
android:id="@+id/filter_items"
<com.google.android.material.textfield.TextInputLayout
android:id="@+id/filter_date_from"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="@string/generic_from"
android:imeOptions="actionNext"
android:importantForAutofill="no"
android:padding="8dp"
app:layout_constraintTop_toBottomOf="@id/filter_items"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintBottom_toTopOf="@id/filter_date_picker_from">
<com.google.android.material.textfield.TextInputEditText
android:id="@+id/filter_date_edit_text_from"
android:drawableStart="@drawable/ic_baseline_date_range_24"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:columnCount="2"
android:orientation="horizontal"
android:padding="8dp"
android:alignmentMode="alignBounds"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintBottom_toTopOf="@id/filter_date_from" />
android:enabled="true"
android:focusable="false"
android:focusableInTouchMode="false"
android:inputType="date"
android:selectAllOnFocus="true" />
<com.google.android.material.textfield.TextInputLayout
android:id="@+id/filter_date_from"
</com.google.android.material.textfield.TextInputLayout>
<DatePicker
android:id="@+id/filter_date_picker_from"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:visibility="gone"
tools:visibility="visible"
android:paddingLeft="8dp"
android:paddingRight="8dp"
app:layout_constraintTop_toBottomOf="@id/filter_date_from"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintBottom_toTopOf="@id/filter_date_to" />
<com.google.android.material.textfield.TextInputLayout
android:id="@+id/filter_date_to"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="@string/generic_to"
android:imeOptions="actionNext"
android:importantForAutofill="no"
android:padding="8dp"
app:layout_constraintTop_toBottomOf="@id/filter_date_picker_from"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintBottom_toTopOf="@id/filter_date_picker_to">
<com.google.android.material.textfield.TextInputEditText
android:id="@+id/filter_date_edit_text_to"
android:drawableStart="@drawable/ic_baseline_date_range_24"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="@string/generic_from"
android:imeOptions="actionNext"
android:importantForAutofill="no"
android:padding="8dp"
app:layout_constraintTop_toBottomOf="@id/filter_items"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintBottom_toTopOf="@id/filter_date_picker_from">
<com.google.android.material.textfield.TextInputEditText
android:id="@+id/filter_date_edit_text_from"
android:drawableStart="@drawable/ic_baseline_date_range_24"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:enabled="true"
android:focusable="false"
android:focusableInTouchMode="false"
android:inputType="date"
android:selectAllOnFocus="true" />
</com.google.android.material.textfield.TextInputLayout>
android:enabled="true"
android:focusable="false"
android:focusableInTouchMode="false"
android:inputType="date"
android:selectAllOnFocus="true" />
<DatePicker
android:id="@+id/filter_date_picker_from"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:visibility="gone"
tools:visibility="visible"
android:paddingLeft="8dp"
android:paddingRight="8dp"
app:layout_constraintTop_toBottomOf="@id/filter_date_from"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintBottom_toTopOf="@id/filter_date_to" />
</com.google.android.material.textfield.TextInputLayout>
<com.google.android.material.textfield.TextInputLayout
android:id="@+id/filter_date_to"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="@string/generic_to"
android:imeOptions="actionNext"
android:importantForAutofill="no"
android:padding="8dp"
app:layout_constraintTop_toBottomOf="@id/filter_date_picker_from"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintBottom_toTopOf="@id/filter_date_picker_to">
<com.google.android.material.textfield.TextInputEditText
android:id="@+id/filter_date_edit_text_to"
android:drawableStart="@drawable/ic_baseline_date_range_24"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:enabled="true"
android:focusable="false"
android:focusableInTouchMode="false"
android:inputType="date"
android:selectAllOnFocus="true" />
</com.google.android.material.textfield.TextInputLayout>
<DatePicker
android:id="@+id/filter_date_picker_to"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:visibility="gone"
tools:visibility="visible"
android:paddingLeft="8dp"
android:paddingRight="8dp"
app:layout_constraintTop_toBottomOf="@id/filter_date_to"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintBottom_toBottomOf="parent" />
<DatePicker
android:id="@+id/filter_date_picker_to"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:visibility="gone"
tools:visibility="visible"
android:paddingLeft="8dp"
android:paddingRight="8dp"
app:layout_constraintTop_toBottomOf="@id/filter_date_to"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintBottom_toBottomOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
</ScrollView>
</LinearLayout>
</ScrollView>
@@ -1,9 +1,11 @@
<?xml version="1.0" encoding="utf-8"?>
<CheckBox xmlns:android="http://schemas.android.com/apk/res/android"
<com.google.android.material.button.MaterialButton xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/filter_dialog_check_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
style="@style/Widget.MaterialComponents.Button.OutlinedButton"
android:checkable="true"
android:gravity="center"
tools:text="Check Button" />
+27 -36
View File
@@ -17,129 +17,120 @@
android:padding="20dp">
<TextView
style="@style/TextMedium"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/help_feature_title"
android:textStyle="bold" />
style="?attr/textAppearanceHeadline6"
android:text="@string/help_feature_title" />
<TextView
style="@style/TextMedium"
android:layout_width="match_parent"
android:layout_height="wrap_content"
style="?attr/textAppearanceBody1"
android:text="@string/help_feature_content" />
<TextView
style="@style/TextMedium"
android:layout_width="match_parent"
android:layout_height="wrap_content"
style="?attr/textAppearanceHeadline6"
android:layout_marginTop="20dp"
android:text="@string/help_track_map_title"
android:textStyle="bold" />
android:text="@string/help_track_map_title" />
<TextView
style="@style/TextMedium"
android:layout_width="match_parent"
android:layout_height="wrap_content"
style="?attr/textAppearanceBody1"
android:linksClickable="true"
android:text="@string/help_track_map_content" />
<TextView
style="@style/TextMedium"
android:layout_width="match_parent"
android:layout_height="wrap_content"
style="?attr/textAppearanceHeadline6"
android:layout_marginTop="20dp"
android:text="@string/help_recording_title"
android:textStyle="bold" />
android:text="@string/help_recording_title" />
<TextView
style="@style/TextMedium"
android:layout_width="match_parent"
android:layout_height="wrap_content"
style="?attr/textAppearanceBody1"
android:text="@string/help_recording_content" />
<TextView
style="@style/TextMedium"
android:layout_width="match_parent"
android:layout_height="wrap_content"
style="?attr/textAppearanceHeadline6"
android:layout_marginTop="20dp"
android:text="@string/help_storage_pictures_title"
android:textStyle="bold" />
android:text="@string/help_storage_pictures_title" />
<TextView
style="@style/TextMedium"
android:layout_width="match_parent"
android:layout_height="wrap_content"
style="?attr/textAppearanceBody1"
android:text="@string/help_storage_pictures_content" />
<TextView
style="@style/TextMedium"
android:layout_width="match_parent"
android:layout_height="wrap_content"
style="?attr/textAppearanceHeadline6"
android:layout_marginTop="20dp"
android:text="@string/help_track_export_title"
android:textStyle="bold" />
android:text="@string/help_track_export_title" />
<TextView
style="@style/TextMedium"
android:layout_width="match_parent"
android:layout_height="wrap_content"
style="?attr/textAppearanceBody1"
android:text="@string/help_track_export_content" />
<TextView
style="@style/TextMedium"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/help_data_google_play_services_title"
android:textStyle="bold" />
style="?attr/textAppearanceHeadline6"
android:text="@string/help_data_google_play_services_title" />
<TextView
style="@style/TextMedium"
android:layout_width="match_parent"
android:layout_height="wrap_content"
style="?attr/textAppearanceBody1"
android:text="@android:string/no" />
<TextView
style="@style/TextMedium"
android:layout_width="match_parent"
android:layout_height="wrap_content"
style="?attr/textAppearanceHeadline6"
android:layout_marginTop="20dp"
android:text="@string/help_data_storage_title"
android:textStyle="bold" />
android:text="@string/help_data_storage_title" />
<TextView
style="@style/TextMedium"
android:layout_width="match_parent"
android:layout_height="wrap_content"
style="?attr/textAppearanceBody1"
android:text="@string/help_data_storage_content" />
<TextView
style="@style/TextMedium"
android:layout_width="match_parent"
android:layout_height="wrap_content"
style="?attr/textAppearanceHeadline6"
android:layout_marginTop="20dp"
android:text="@string/help_gps_troubleshooting_title"
android:textStyle="bold" />
android:text="@string/help_gps_troubleshooting_title" />
<TextView
style="@style/TextMedium"
android:layout_width="match_parent"
android:layout_height="wrap_content"
style="?attr/textAppearanceBody1"
android:linksClickable="true"
android:text="@string/help_gps_troubleshooting_content" />
<TextView
style="@style/TextMedium"
android:layout_width="match_parent"
android:layout_height="wrap_content"
style="?attr/textAppearanceHeadline6"
android:layout_marginTop="20dp"
android:text="@string/help_support_title"
android:textStyle="bold" />
android:text="@string/help_support_title" />
<TextView
style="@style/TextMedium"
android:layout_width="match_parent"
android:layout_height="wrap_content"
style="?attr/textAppearanceBody1"
android:linksClickable="true"
android:text="@string/help_support_content" />
</LinearLayout>
+29 -12
View File
@@ -28,9 +28,9 @@
<TextView
android:id="@+id/import_progress_done"
style="@style/TextMediumPrimary"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
style="?attr/textAppearanceSubtitle1"
android:layout_marginStart="24dp"
android:layout_marginTop="48dp"
app:layout_constraintEnd_toStartOf="@id/import_progress_slash"
@@ -41,9 +41,9 @@
<TextView
android:id="@+id/import_progress_slash"
style="@style/TextMediumPrimary"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
style="?attr/textAppearanceSubtitle1"
android:text="@string/generic_separator_done_total"
app:layout_constraintBottom_toBottomOf="@id/import_progress_done"
app:layout_constraintEnd_toStartOf="@id/import_progress_total"
@@ -52,9 +52,9 @@
<TextView
android:id="@+id/import_progress_total"
style="@style/TextMediumPrimary"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
style="?attr/textAppearanceSubtitle1"
android:layout_marginEnd="24dp"
app:layout_constraintBottom_toBottomOf="@id/import_progress_slash"
app:layout_constraintEnd_toEndOf="parent"
@@ -62,9 +62,8 @@
app:layout_constraintTop_toTopOf="@id/import_progress_slash"
tools:text="10" />
<ProgressBar
<com.google.android.material.progressindicator.LinearProgressIndicator
android:id="@+id/import_progress_bar"
style="@style/ProgressBar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="24dp"
@@ -79,7 +78,11 @@
<!-- Files imported correctly -->
<TextView
android:id="@+id/import_progress_summary_ok_msg"
style="@style/TextImportExportSummaryStart"
android:layout_width="0dp"
android:layout_height="wrap_content"
style="?attr/textAppearanceSubtitle1"
android:gravity="end"
android:layout_margin="16dp"
android:text="@string/import_progress_summary_ok_msg"
app:layout_constraintEnd_toEndOf="@id/guideline_vertical_half"
app:layout_constraintStart_toStartOf="parent"
@@ -87,7 +90,9 @@
<TextView
android:id="@+id/import_progress_summary_ok"
style="@style/TextImportExportSummaryEnd"
android:layout_width="0dp"
android:layout_height="wrap_content"
style="?attr/textAppearanceSubtitle1"
app:layout_constraintBottom_toBottomOf="@id/import_progress_summary_ok_msg"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@id/guideline_vertical_half"
@@ -112,7 +117,11 @@
<!-- Already exists files -->
<TextView
android:id="@+id/import_progress_summary_exists_msg"
style="@style/TextImportExportSummaryStart"
android:layout_width="0dp"
android:layout_height="wrap_content"
style="?attr/textAppearanceSubtitle1"
android:gravity="end"
android:layout_margin="16dp"
android:text="@string/import_progress_summary_exists_msg"
app:layout_constraintEnd_toEndOf="@id/guideline_vertical_half"
app:layout_constraintStart_toStartOf="parent"
@@ -120,7 +129,9 @@
<TextView
android:id="@+id/import_progress_summary_exists"
style="@style/TextImportExportSummaryEnd"
android:layout_width="0dp"
android:layout_height="wrap_content"
style="?attr/textAppearanceSubtitle1"
app:layout_constraintBottom_toBottomOf="@id/import_progress_summary_exists_msg"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@id/guideline_vertical_half"
@@ -145,7 +156,11 @@
<!-- Importing error files -->
<TextView
android:id="@+id/import_progress_summary_errors_msg"
style="@style/TextImportExportSummaryStart"
android:layout_width="0dp"
android:layout_height="wrap_content"
style="?attr/textAppearanceSubtitle1"
android:gravity="end"
android:layout_margin="16dp"
android:text="@string/import_progress_summary_errors_msg"
app:layout_constraintEnd_toEndOf="@id/guideline_vertical_half"
app:layout_constraintStart_toStartOf="parent"
@@ -153,7 +168,9 @@
<TextView
android:id="@+id/import_progress_summary_errors"
style="@style/TextImportExportSummaryEnd"
android:layout_width="0dp"
android:layout_height="wrap_content"
style="?attr/textAppearanceSubtitle1"
app:layout_constraintBottom_toBottomOf="@id/import_progress_summary_errors_msg"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@id/guideline_vertical_half"
@@ -191,9 +208,9 @@
<TextView
android:id="@+id/import_progress_alert_msg"
style="@style/TextMediumPrimary"
android:layout_width="0dp"
android:layout_height="wrap_content"
style="?attr/textAppearanceSubtitle1"
android:layout_marginTop="48dp"
android:layout_marginEnd="24dp"
android:layout_marginBottom="24dp"
+24 -21
View File
@@ -3,49 +3,52 @@
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:padding="8dp"
android:orientation="vertical">
<LinearLayout
<com.google.android.material.textfield.TextInputLayout
android:id="@+id/intervals_input_layout"
style="?attr/textInputOutlinedExposedDropdownMenuStyle"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:layout_marginEnd="8dp"
android:orientation="horizontal">
android:layout_marginBottom="8dp"
android:hint="@string/stats_split_interval">
<TextView
style="@style/TextMediumPrimary"
android:layout_width="wrap_content"
<de.dennisguse.opentracks.ui.util.AutoCompleteTextViewForDropdown
android:id="@+id/intervals_dropdown"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/stats_split_interval" />
android:inputType="none" />
<Spinner
android:id="@+id/spinner_intervals"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center" />
</LinearLayout>
</com.google.android.material.textfield.TextInputLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:layout_marginEnd="8dp"
android:orientation="horizontal">
<TextView
android:id="@+id/interval_distance"
style="@style/IntervalLabel"
android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="wrap_content"
style="@style/TextAppearance.OpenTracks.PrimaryHeader"
android:text="@string/stats_distance" />
<TextView
android:id="@+id/interval_rate"
style="@style/IntervalLabel"
android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="wrap_content"
style="@style/TextAppearance.OpenTracks.PrimaryHeader"
tools:text="Speed" />
<TextView
android:id="@+id/interval_altitude"
style="@style/IntervalLabel"
android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="wrap_content"
style="@style/TextAppearance.OpenTracks.PrimaryHeader"
android:text="@string/stats_altitude" />
</LinearLayout>
@@ -65,9 +68,9 @@
<TextView
android:id="@+id/interval_list_empty_view"
style="@style/TextMedium"
android:layout_width="match_parent"
android:layout_height="match_parent"
style="?attr/textAppearanceHeadline4"
android:gravity="center_horizontal|center_vertical"
android:text="@string/interval_list_empty_message" />
@@ -10,18 +10,20 @@
<TextView
android:id="@+id/interval_item_distance"
style="@style/TextMediumPrimary"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:layout_gravity="center_vertical"
style="?attr/textAppearanceBody1"
tools:text="1 km" />
<TextView
android:id="@+id/interval_item_rate"
style="@style/TextMediumPrimary"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:layout_gravity="center_vertical"
style="?attr/textAppearanceBody1"
tools:text="15 km/h" />
<LinearLayout
@@ -32,17 +34,19 @@
<TextView
android:id="@+id/interval_item_gain"
style="@style/TextSmall"
android:layout_width="match_parent"
app:drawableStartCompat="@drawable/ic_arrow_drop_up_24"
tools:text="100 m" />
android:layout_height="wrap_content"
style="?attr/textAppearanceBody2"
tools:text="100 m"
app:drawableStartCompat="@drawable/ic_arrow_drop_up_24" />
<TextView
android:id="@+id/interval_item_loss"
style="@style/TextSmall"
android:layout_width="match_parent"
app:drawableStartCompat="@drawable/ic_arrow_drop_down_24"
tools:text="100 m" />
android:layout_height="wrap_content"
style="?attr/textAppearanceBody2"
tools:text="100 m"
app:drawableStartCompat="@drawable/ic_arrow_drop_down_24" />
</LinearLayout>
+132 -138
View File
@@ -1,152 +1,146 @@
<?xml version="1.0" encoding="utf-8"?><!--
Copyright 2012 Google Inc.
<?xml version="1.0" encoding="utf-8"?>
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content">
android:layout_height="wrap_content"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:background="@drawable/activated_background"
android:paddingStart="8dp"
android:paddingEnd="8dp"
android:paddingTop="12dp"
android:paddingBottom="12dp">
<!-- Photo -->
<ImageView
android:id="@+id/list_item_photo"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
android:layout_marginBottom="4dp"
android:contentDescription="@string/image_photo_marker"
android:scaleType="centerCrop" />
<FrameLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<!-- A gradient on top of the text -->
<ImageView
android:id="@+id/list_item_text_gradient"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:alpha=".6"
android:visibility="gone"
tools:visibility="visible"
android:contentDescription="@string/image_photo_marker"
android:src="@drawable/text_gradient" />
<!-- Table 1 -->
<TableLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:minHeight="?android:attr/listPreferredItemHeight"
android:paddingTop="8dp"
android:paddingStart="4dp"
android:paddingEnd="12dp"
android:paddingBottom="12dp"
android:shrinkColumns="1"
android:stretchColumns="1">
<!-- Table 1: Row 1 -->
<TableRow>
<!-- Table 1: Row 1: Column 1: (icon) -->
<ImageView
android:id="@+id/list_item_icon"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:layout_marginStart="4dp"
android:layout_marginEnd="8dp"
android:contentDescription="@string/image_track"
app:tint="?android:textColorPrimary" />
<!-- Table 1: Row 1: Column 2: (Table 2) -->
<TableLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:shrinkColumns="0"
android:stretchColumns="0">
<TableRow>
<!-- Table 2: Row 1: Column 1: (name) -->
<TextView
android:id="@+id/list_item_name"
style="@style/TextMediumPrimary"
android:layout_width="match_parent"
android:layout_gravity="bottom"
android:ellipsize="end"
android:singleLine="true"
tools:text="Main text" />
<!-- Table 2: Row 1: Column 2: (date) -->
<TextView
android:id="@+id/list_item_date"
style="@style/ListItemDate"
tools:text="2020-09-09" />
</TableRow>
<TableRow>
<!-- Need to match the style set in ListItemUtils.setListItem -->
<!-- Table 2: Row 2: Column 1: (shared owner, total time, total distance, and marker count) -->
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="bottom">
<TextView
android:id="@+id/list_item_time_distance"
style="@style/TextSmall"
android:layout_gravity="bottom"
android:ellipsize="end"
android:singleLine="true"
tools:text="50:43 (50.00km)" />
<ImageView
android:id="@+id/list_item_marker_count_icon"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="bottom"
android:layout_marginStart="2dp"
android:layout_marginEnd="2dp"
android:layout_marginBottom="1dp"
android:contentDescription="@string/image_marker_count"
android:scaleType="centerInside"
android:src="@drawable/ic_marker_show_24dp" />
<TextView
android:id="@+id/list_item_marker_count"
style="@style/TextSmall"
android:layout_gravity="bottom"
android:ellipsize="end"
android:singleLine="true"
tools:text="2" />
</LinearLayout>
<!-- Table 2: Row 2: Column 2: (time) -->
<TextView
android:id="@+id/list_item_time"
style="@style/ListItemDate" />
</TableRow>
</TableLayout>
</TableRow>
<TableRow>
<!-- Table 1: Row 2: (category and description) -->
<TextView
android:id="@+id/list_item_category_description"
style="@style/TextSmall"
android:layout_column="1"
android:ellipsize="end"
android:maxLines="2"
android:singleLine="false"
tools:text="description" />
</TableRow>
</TableLayout>
</FrameLayout>
<View
<!-- A gradient on top of the text -->
<ImageView
android:id="@+id/list_item_text_gradient"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="?android:attr/activatedBackgroundIndicator" />
</FrameLayout>
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
android:alpha=".6"
android:visibility="gone"
tools:visibility="visible"
android:contentDescription="@string/image_photo_marker"
android:src="@drawable/text_gradient" />
<!-- Icon -->
<ImageView
android:id="@+id/list_item_icon"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintStart_toStartOf="parent"
android:contentDescription="@string/image_track"
tools:src="@drawable/ic_activity_bike_24dp"/>
<!-- Name -->
<TextView
android:id="@+id/list_item_name"
android:layout_width="0dp"
android:layout_height="wrap_content"
style="?attr/textAppearanceBody1"
android:singleLine="true"
android:layout_marginStart="8dp"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintStart_toEndOf="@+id/list_item_icon"
app:layout_constraintEnd_toStartOf="@id/list_item_date"
tools:text="Main text" />
<!-- Date -->
<TextView
android:id="@+id/list_item_date"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
style="?attr/textAppearanceBodySmall"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintStart_toEndOf="@+id/list_item_name"
app:layout_constraintEnd_toEndOf="parent"
android:gravity="end"
android:layout_marginStart="8dp"
tools:text="2022-02-17" />
<!-- Total time and distance -->
<TextView
android:id="@+id/list_item_time_distance"
android:layout_width="0dp"
android:layout_height="wrap_content"
style="?attr/textAppearanceBodySmall"
app:layout_constraintTop_toBottomOf="@id/list_item_name"
app:layout_constraintStart_toStartOf="@id/list_item_name"
tools:text="50:43 (50.00km)" />
<!-- Marker count icon -->
<ImageView
android:id="@+id/list_item_marker_count_icon"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_constraintTop_toBottomOf="@id/list_item_name"
app:layout_constraintStart_toEndOf="@id/list_item_time_distance"
app:layout_constraintBottom_toBottomOf="@id/list_item_time_distance"
android:contentDescription="@string/image_marker_count"
android:scaleType="centerInside"
android:src="@drawable/ic_marker_show_24dp" />
<!-- Marker count text -->
<TextView
android:id="@+id/list_item_marker_count"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
style="?attr/textAppearanceBodySmall"
app:layout_constraintStart_toEndOf="@id/list_item_marker_count_icon"
app:layout_constraintBottom_toBottomOf="@id/list_item_marker_count_icon"
android:singleLine="true"
tools:text="2" />
<!-- Time -->
<TextView
android:id="@+id/list_item_time"
android:layout_width="0dp"
android:layout_height="wrap_content"
style="?attr/textAppearanceBodySmall"
app:layout_constraintTop_toBottomOf="@id/list_item_name"
app:layout_constraintStart_toEndOf="@id/list_item_marker_count"
app:layout_constraintEnd_toEndOf="parent"
android:gravity="end"
android:layout_gravity="bottom"
android:layout_marginStart="8dp"
tools:text="10:10:10"/>
<!-- Second row barrier -->
<androidx.constraintlayout.widget.Barrier
android:id="@+id/list_item_second_row_barrier"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:barrierDirection="bottom"
app:constraint_referenced_ids="list_item_time_distance,list_item_marker_count_icon,list_item_marker_count,list_item_time" />
<!-- Category and description -->
<TextView
android:id="@+id/list_item_category_description"
android:layout_width="0dp"
android:layout_height="wrap_content"
style="?attr/textAppearanceBodySmall"
app:layout_constraintTop_toBottomOf="@id/list_item_second_row_barrier"
app:layout_constraintStart_toStartOf="@id/list_item_name"
app:layout_constraintEnd_toEndOf="parent"
android:maxLines="2"
android:ellipsize="end"
tools:text="Description" />
</androidx.constraintlayout.widget.ConstraintLayout>
+19 -6
View File
@@ -15,7 +15,8 @@ limitations under the License.
-->
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
android:layout_height="match_parent"
xmlns:tools="http://schemas.android.com/tools">
<ImageView
android:id="@+id/marker_detail_marker_photo"
@@ -46,20 +47,32 @@ limitations under the License.
<TextView
android:id="@+id/marker_detail_marker_name"
style="@style/TextMedium"
android:paddingTop="8dp" />
android:layout_width="wrap_content"
android:layout_height="wrap_content"
style="?attr/textAppearanceBody1"
android:paddingTop="8dp"
tools:text="Marker Name" />
<TextView
android:id="@+id/marker_detail_marker_category"
style="@style/TextSmall" />
android:layout_width="wrap_content"
android:layout_height="wrap_content"
style="?attr/textAppearanceBody2"
tools:text="Marker Category" />
<TextView
android:id="@+id/marker_detail_marker_description"
style="@style/TextSmall" />
android:layout_width="wrap_content"
android:layout_height="wrap_content"
style="?attr/textAppearanceBody2"
tools:text="Marker Description" />
<TextView
android:id="@+id/marker_detail_marker_location"
style="@style/TextSmall" />
android:layout_width="wrap_content"
android:layout_height="wrap_content"
style="?attr/textAppearanceBody2"
tools:text="Marker Location" />
</LinearLayout>
</FrameLayout>
</FrameLayout>
+15 -6
View File
@@ -31,40 +31,48 @@ limitations under the License.
<com.google.android.material.textfield.TextInputLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
style="?attr/textInputOutlinedStyle"
android:hint="@string/generic_name"
android:imeOptions="actionNext"
android:importantForAutofill="no">
android:importantForAutofill="no"
android:layout_marginBottom="16dp">
<com.google.android.material.textfield.TextInputEditText
android:drawableStart="@drawable/ic_marker_orange_pushpin_with_shadow"
android:id="@+id/marker_edit_name"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:drawableStart="@drawable/ic_marker_orange_pushpin_with_shadow"
android:inputType="textCapWords"
android:selectAllOnFocus="true" />
</com.google.android.material.textfield.TextInputLayout>
<com.google.android.material.textfield.TextInputLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
style="?attr/textInputOutlinedExposedDropdownMenuStyle"
android:imeOptions="actionNext"
android:importantForAutofill="no">
android:importantForAutofill="no"
android:layout_marginBottom="16dp">
<AutoCompleteTextView
<com.google.android.material.textfield.MaterialAutoCompleteTextView
android:id="@+id/marker_edit_marker_type"
style="@style/EditCategory"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="@string/marker_edit_marker_type"
android:imeOptions="actionNext"
android:selectAllOnFocus="true" />
</com.google.android.material.textfield.TextInputLayout>
<com.google.android.material.textfield.TextInputLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
style="?attr/textInputOutlinedStyle"
android:hint="@string/generic_description"
android:imeOptions="actionNext"
android:importantForAutofill="no">
android:importantForAutofill="no"
android:layout_marginBottom="16dp">
<com.google.android.material.textfield.TextInputEditText
android:id="@+id/marker_edit_description"
@@ -72,6 +80,7 @@ limitations under the License.
android:layout_height="wrap_content"
android:inputType="textCapSentences"
android:selectAllOnFocus="true" />
</com.google.android.material.textfield.TextInputLayout>
<RelativeLayout
+5 -1
View File
@@ -27,6 +27,10 @@ limitations under the License.
<TextView
android:id="@+id/marker_list_empty"
style="@style/ListEmptyTextView"
android:layout_width="match_parent"
android:layout_height="match_parent"
style="?attr/textAppearanceHeadline4"
android:gravity="center_horizontal|center_vertical"
android:text="@string/marker_list_empty_message" />
</LinearLayout>
@@ -14,7 +14,10 @@ See the License for the specific language governing permissions and
limitations under the License.
-->
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
style="@style/ScrollView">
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:scrollbarStyle="outsideInset">
<LinearLayout
android:layout_width="match_parent"
@@ -23,18 +26,33 @@ limitations under the License.
android:paddingTop="16dp"
android:paddingEnd="8dp">
<AutoCompleteTextView
android:id="@+id/activity_type_preference_text_view"
style="@style/EditCategory"
<com.google.android.material.textfield.TextInputLayout
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:hint="@string/track_edit_activity_type_hint" />
style="?attr/textInputOutlinedStyle"
android:imeOptions="actionNext"
android:importantForAutofill="no"
android:layout_marginEnd="8dp">
<com.google.android.material.textfield.MaterialAutoCompleteTextView
android:id="@+id/activity_type_preference_text_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:padding="16dp"
android:hint="@string/track_edit_activity_type_hint"
android:imeOptions="actionNext"
android:singleLine="true"
android:layout_gravity="bottom"
android:selectAllOnFocus="true" />
</com.google.android.material.textfield.TextInputLayout>
<ImageView
android:id="@+id/activity_type_preference_spinner"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_gravity="bottom" />
android:layout_gravity="bottom"
tools:src="@drawable/ic_activity_bike_24dp"/>
</LinearLayout>
</ScrollView>
+97 -37
View File
@@ -2,13 +2,22 @@
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
style="@style/StatsScrollView">
android:layout_width="match_parent"
android:layout_height="match_parent"
android:scrollbarStyle="outsideOverlay">
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<!-- Guidelines -->
<androidx.constraintlayout.widget.Guideline
android:id="@+id/guideline_top"
android:layout_width="0dp"
android:layout_height="0dp"
android:orientation="horizontal"
app:layout_constraintGuide_begin="16dp" />
<androidx.constraintlayout.widget.Guideline
android:id="@+id/guideline"
android:layout_width="0dp"
@@ -33,25 +42,29 @@
<!-- Activity information: icon, name, description and start datetime -->
<ImageView
android:id="@+id/stats_activity_type_icon"
style="@style/IconStats"
android:layout_width="48dp"
android:layout_height="48dp"
app:layout_constraintStart_toEndOf="@id/guideline"
app:layout_constraintTop_toTopOf="@id/stats_name_value"
app:layout_constraintTop_toTopOf="@id/guideline_top"
tools:src="@drawable/ic_activity_bike_24dp" />
<TextView
android:id="@+id/stats_name_value"
style="@style/TextLargeStats"
style="?attr/textAppearanceHeadline6"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
app:layout_constrainedWidth="true"
app:layout_constraintEnd_toStartOf="@id/guideline3"
app:layout_constraintStart_toEndOf="@id/stats_activity_type_icon"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintTop_toTopOf="@id/guideline_top"
tools:text="Name of the activity" />
<TextView
android:id="@+id/stats_description_value"
style="@style/TextMediumStats"
style="?attr/textAppearanceBody1"
android:layout_width="0dp"
android:layout_height="wrap_content"
app:layout_constrainedWidth="true"
app:layout_constraintEnd_toStartOf="@id/guideline3"
app:layout_constraintStart_toStartOf="@id/stats_name_value"
@@ -60,8 +73,11 @@
<TextView
android:id="@+id/stats_start_datetime_value"
style="@style/TextSmallStats"
style="?attr/textAppearanceBody2"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
android:gravity="end"
app:layout_constrainedWidth="true"
app:layout_constraintEnd_toStartOf="@id/guideline3"
app:layout_constraintStart_toStartOf="@id/guideline"
@@ -79,8 +95,8 @@
<!-- Horizontal line -->
<View
android:id="@+id/stats_information_horizontal_line"
style="@style/StatsHorizontalLine"
android:layout_marginBottom="8dp"
style="@style/HorizontalLine"
android:layout_margin="8dp"
app:layout_constraintStart_toEndOf="@id/guideline"
app:layout_constraintEnd_toStartOf="@id/guideline3"
app:layout_constraintTop_toBottomOf="@id/stats_start_datetime_value" />
@@ -88,7 +104,9 @@
<!-- Distance -->
<TextView
android:id="@+id/stats_distance_label"
style="@style/LargeLabel"
style="@style/TextAppearance.OpenTracks.PrimaryHeader"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/stats_distance"
app:layout_constrainedWidth="true"
app:layout_constraintStart_toEndOf="@id/guideline"
@@ -97,7 +115,9 @@
<TextView
android:id="@+id/stats_distance_value"
style="@style/StatsPrimaryValue"
style="@style/TextAppearance.OpenTracks.PrimaryValue"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:value="@string/value_unknown"
app:layout_constraintHorizontal_chainStyle="packed"
app:layout_constraintStart_toEndOf="@id/guideline"
@@ -107,7 +127,9 @@
<TextView
android:id="@+id/stats_distance_unit"
style="@style/StatsUnit"
style="@style/TextAppearance.OpenTracks.PrimaryUnit"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_constraintBottom_toBottomOf="@id/stats_distance_value"
app:layout_constraintStart_toEndOf="@id/stats_distance_value"
app:layout_constraintEnd_toStartOf="@id/guideline2"
@@ -116,7 +138,9 @@
<!-- Moving time -->
<TextView
android:id="@+id/stats_moving_time_label"
style="@style/LargeLabel"
style="@style/TextAppearance.OpenTracks.PrimaryHeader"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/stats_moving_time"
app:layout_constrainedWidth="true"
app:layout_constraintStart_toEndOf="@id/guideline2"
@@ -125,7 +149,9 @@
<TextView
android:id="@+id/stats_moving_time_value"
style="@style/StatsPrimaryValue"
style="@style/TextAppearance.OpenTracks.PrimaryValue"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:value="@string/value_unknown"
app:layout_constraintStart_toEndOf="@id/guideline2"
app:layout_constraintEnd_toStartOf="@id/guideline3"
@@ -135,7 +161,9 @@
<!-- Total time -->
<TextView
android:id="@+id/stats_total_time_label"
style="@style/StatsSmallLabel"
style="@style/TextAppearance.OpenTracks.SecondaryHeader"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/stats_total_time"
app:layout_constrainedWidth="true"
app:layout_constraintStart_toEndOf="@id/guideline2"
@@ -144,7 +172,9 @@
<TextView
android:id="@+id/stats_total_time_value"
style="@style/StatsSmallValue"
style="@style/TextAppearance.OpenTracks.SecondaryValue"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_constraintStart_toEndOf="@id/guideline2"
app:layout_constraintEnd_toStartOf="@id/guideline3"
app:layout_constraintTop_toBottomOf="@id/stats_total_time_label"
@@ -161,8 +191,8 @@
<!-- Horizontal line -->
<View
android:id="@+id/stats_speed_horizontal_line"
style="@style/StatsHorizontalLine"
android:layout_marginBottom="8dp"
style="@style/HorizontalLine"
android:layout_margin="8dp"
app:layout_constraintStart_toEndOf="@id/guideline"
app:layout_constraintEnd_toStartOf="@id/guideline3"
app:layout_constraintTop_toBottomOf="@id/stats_time_barrier" />
@@ -170,7 +200,9 @@
<!-- Speed/Pace max -->
<TextView
android:id="@+id/stats_max_speed_label"
style="@style/LargeLabel"
style="@style/TextAppearance.OpenTracks.PrimaryHeader"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_constrainedWidth="true"
app:layout_constraintStart_toEndOf="@id/guideline"
app:layout_constraintEnd_toStartOf="@id/guideline2"
@@ -179,7 +211,9 @@
<TextView
android:id="@+id/stats_max_speed_value"
style="@style/StatsPrimaryValue"
style="@style/TextAppearance.OpenTracks.PrimaryValue"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:value="@string/value_unknown"
app:layout_constraintHorizontal_chainStyle="packed"
app:layout_constraintStart_toEndOf="@id/guideline"
@@ -189,7 +223,9 @@
<TextView
android:id="@+id/stats_max_speed_unit"
style="@style/StatsUnit"
style="@style/TextAppearance.OpenTracks.PrimaryUnit"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_constraintBottom_toBottomOf="@id/stats_max_speed_value"
app:layout_constraintStart_toEndOf="@id/stats_max_speed_value"
app:layout_constraintEnd_toStartOf="@id/guideline2"
@@ -198,7 +234,9 @@
<!-- Avg. moving speed/pace -->
<TextView
android:id="@+id/stats_moving_speed_label"
style="@style/LargeLabel"
style="@style/TextAppearance.OpenTracks.PrimaryHeader"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_constrainedWidth="true"
app:layout_constraintStart_toEndOf="@id/guideline2"
app:layout_constraintEnd_toStartOf="@id/guideline3"
@@ -207,7 +245,9 @@
<TextView
android:id="@+id/stats_moving_speed_value"
style="@style/StatsPrimaryValue"
style="@style/TextAppearance.OpenTracks.PrimaryValue"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:value="@string/value_unknown"
app:layout_constraintHorizontal_chainStyle="packed"
app:layout_constraintStart_toEndOf="@id/guideline2"
@@ -217,7 +257,9 @@
<TextView
android:id="@+id/stats_moving_speed_unit"
style="@style/StatsUnit"
style="@style/TextAppearance.OpenTracks.PrimaryUnit"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_constraintBottom_toBottomOf="@id/stats_moving_speed_value"
app:layout_constraintStart_toEndOf="@id/stats_moving_speed_value"
app:layout_constraintEnd_toStartOf="@id/guideline3"
@@ -226,7 +268,9 @@
<!-- Average speed/pace -->
<TextView
android:id="@+id/stats_average_speed_label"
style="@style/StatsSmallLabel"
style="@style/TextAppearance.OpenTracks.SecondaryHeader"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_constrainedWidth="true"
app:layout_constraintStart_toEndOf="@id/guideline2"
app:layout_constraintEnd_toStartOf="@id/guideline3"
@@ -235,7 +279,9 @@
<TextView
android:id="@+id/stats_average_speed_value"
style="@style/StatsSmallValue"
style="@style/TextAppearance.OpenTracks.SecondaryValue"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:value="@string/value_unknown"
app:layout_constraintHorizontal_chainStyle="packed"
app:layout_constraintStart_toEndOf="@id/guideline2"
@@ -245,7 +291,9 @@
<TextView
android:id="@+id/stats_average_speed_unit"
style="@style/StatsUnit"
style="@style/TextAppearance.OpenTracks.PrimaryUnit"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_constraintBottom_toBottomOf="@id/stats_average_speed_value"
app:layout_constraintStart_toEndOf="@id/stats_average_speed_value"
app:layout_constraintEnd_toStartOf="@id/guideline3"
@@ -262,8 +310,8 @@
<!-- Horizontal line -->
<View
android:id="@+id/stats_altitude_horizontal_line"
style="@style/StatsHorizontalLine"
android:layout_marginBottom="8dp"
style="@style/HorizontalLine"
android:layout_margin="8dp"
app:layout_constraintStart_toEndOf="@id/guideline"
app:layout_constraintEnd_toStartOf="@id/guideline3"
app:layout_constraintTop_toBottomOf="@id/stats_speed_barrier" />
@@ -277,7 +325,9 @@
<TextView
android:id="@+id/stats_altitude_gain_label"
style="@style/LargeLabel"
style="@style/TextAppearance.OpenTracks.PrimaryHeader"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/stats_gain"
app:layout_constrainedWidth="true"
app:layout_constraintStart_toEndOf="@id/guideline"
@@ -286,7 +336,9 @@
<TextView
android:id="@+id/stats_altitude_gain_value"
style="@style/StatsPrimaryValue"
style="@style/TextAppearance.OpenTracks.PrimaryValue"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:value="@string/value_unknown"
app:layout_constraintHorizontal_chainStyle="packed"
app:layout_constraintStart_toEndOf="@id/guideline"
@@ -296,7 +348,9 @@
<TextView
android:id="@+id/stats_altitude_gain_unit"
style="@style/StatsUnit"
style="@style/TextAppearance.OpenTracks.PrimaryUnit"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_constraintBottom_toBottomOf="@id/stats_altitude_gain_value"
app:layout_constraintStart_toEndOf="@id/stats_altitude_gain_value"
app:layout_constraintEnd_toStartOf="@id/guideline2"
@@ -304,7 +358,9 @@
<TextView
android:id="@+id/stats_altitude_loss_label"
style="@style/LargeLabel"
style="@style/TextAppearance.OpenTracks.PrimaryHeader"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/stats_loss"
app:layout_constrainedWidth="true"
app:layout_constraintStart_toEndOf="@id/guideline2"
@@ -313,7 +369,9 @@
<TextView
android:id="@+id/stats_altitude_loss_value"
style="@style/StatsPrimaryValue"
style="@style/TextAppearance.OpenTracks.PrimaryValue"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:value="@string/value_unknown"
app:layout_constraintHorizontal_chainStyle="packed"
app:layout_constraintStart_toEndOf="@id/guideline2"
@@ -323,7 +381,9 @@
<TextView
android:id="@+id/stats_altitude_loss_unit"
style="@style/StatsUnit"
style="@style/TextAppearance.OpenTracks.PrimaryUnit"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_constraintBottom_toBottomOf="@id/stats_altitude_loss_value"
app:layout_constraintStart_toEndOf="@id/stats_altitude_loss_value"
app:layout_constraintEnd_toStartOf="@id/guideline3"
@@ -340,8 +400,8 @@
<!-- Horizontal line -->
<View
android:id="@+id/stats_end_horizontal_line"
style="@style/StatsHorizontalLine"
android:layout_marginBottom="8dp"
style="@style/HorizontalLine"
android:layout_margin="8dp"
app:layout_constraintStart_toEndOf="@id/guideline"
app:layout_constraintEnd_toStartOf="@id/guideline3"
app:layout_constraintTop_toBottomOf="@id/stats_altitude_barrier" />
@@ -2,7 +2,6 @@
<androidx.constraintlayout.widget.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
style="@style/StatsScrollView"
android:layout_width="match_parent"
android:layout_height="match_parent">
+6 -2
View File
@@ -10,7 +10,9 @@
<TextClock
android:id="@+id/stats_clock"
style="@style/StatsPrimaryValue"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
style="@style/TextAppearance.OpenTracks.PrimaryValue"
android:value="@string/value_unknown"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintStart_toStartOf="parent"
@@ -19,7 +21,9 @@
<TextView
android:id="@+id/stats_description_main"
style="@style/StatsPrimaryLabel"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
style="@style/TextAppearance.OpenTracks.PrimaryHeader"
android:text="@string/stats_clock"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"
+12 -4
View File
@@ -10,7 +10,9 @@
<TextView
android:id="@+id/stats_value"
style="@style/StatsPrimaryValue"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
style="@style/TextAppearance.OpenTracks.PrimaryValue"
android:value="@string/value_unknown"
app:layout_constraintHorizontal_chainStyle="packed"
app:layout_constraintTop_toTopOf="parent"
@@ -20,7 +22,9 @@
<TextView
android:id="@+id/stats_unit"
style="@style/StatsUnit"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
style="@style/TextAppearance.OpenTracks.PrimaryUnit"
tools:text="@string/sensor_unit_beats_per_minute"
app:layout_constraintStart_toEndOf="@id/stats_value"
app:layout_constraintEnd_toEndOf="parent"
@@ -28,7 +32,9 @@
<TextView
android:id="@+id/stats_description_main"
style="@style/StatsPrimaryLabel"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
style="@style/TextAppearance.OpenTracks.PrimaryHeader"
tools:text="@string/sensor_state_heart_rate"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"
@@ -36,7 +42,9 @@
<TextView
android:id="@+id/stats_description_secondary"
style="@style/StatsTinyValue"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
style="@style/TextAppearance.OpenTracks.SecondaryHeader"
android:visibility="gone"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"
+13 -6
View File
@@ -5,12 +5,13 @@
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingBottom="16dp"
android:paddingTop="16dp">
android:layout_marginBottom="16dp">
<TextView
android:id="@+id/stats_description_main"
style="@style/LargeLabel"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
style="@style/TextAppearance.OpenTracks.PrimaryHeader"
tools:text="@string/sensor_state_heart_rate"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"
@@ -18,7 +19,9 @@
<TextView
android:id="@+id/stats_value"
style="@style/StatsPrimaryValue"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
style="@style/TextAppearance.OpenTracks.PrimaryValue"
android:value="@string/value_unknown"
app:layout_constraintHorizontal_chainStyle="packed"
app:layout_constraintTop_toBottomOf="@id/stats_description_main"
@@ -28,7 +31,9 @@
<TextView
android:id="@+id/stats_unit"
style="@style/StatsUnit"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
style="@style/TextAppearance.OpenTracks.PrimaryUnit"
tools:text="@string/sensor_unit_beats_per_minute"
app:layout_constraintStart_toEndOf="@id/stats_value"
app:layout_constraintEnd_toEndOf="parent"
@@ -36,7 +41,9 @@
<TextView
android:id="@+id/stats_description_secondary"
style="@style/StatsTinyValue"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
style="@style/TextAppearance.OpenTracks.SecondaryHeader"
android:visibility="gone"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"
+3 -4
View File
@@ -1,10 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<merge xmlns:android="http://schemas.android.com/apk/res/android">
<androidx.appcompat.widget.Toolbar
<com.google.android.material.appbar.MaterialToolbar
android:id="@+id/toolbar"
style="@style/Widget.MaterialComponents.Toolbar.Surface"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="?attr/colorPrimary"
android:minHeight="?attr/actionBarSize" />
android:layout_height="wrap_content" />
</merge>
+20 -6
View File
@@ -16,6 +16,7 @@ limitations under the License.
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
xmlns:tools="http://schemas.android.com/tools"
android:orientation="vertical">
<include layout="@layout/toolbar" />
@@ -31,9 +32,11 @@ limitations under the License.
<com.google.android.material.textfield.TextInputLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
style="?attr/textInputOutlinedStyle"
android:hint="@string/generic_name"
android:imeOptions="actionNext"
android:importantForAutofill="no">
android:importantForAutofill="no"
android:layout_marginBottom="16dp">
<com.google.android.material.textfield.TextInputEditText
android:id="@+id/track_edit_name"
@@ -41,6 +44,7 @@ limitations under the License.
android:layout_height="wrap_content"
android:inputType="textCapWords"
android:selectAllOnFocus="true" />
</com.google.android.material.textfield.TextInputLayout>
<LinearLayout
@@ -52,30 +56,39 @@ limitations under the License.
android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="wrap_content"
style="?attr/textInputOutlinedExposedDropdownMenuStyle"
android:imeOptions="actionNext"
android:importantForAutofill="no">
android:importantForAutofill="no"
android:layout_marginBottom="16dp">
<AutoCompleteTextView
<com.google.android.material.textfield.MaterialAutoCompleteTextView
android:id="@+id/track_edit_activity_type"
style="@style/EditCategory"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginEnd="8dp"
android:hint="@string/track_edit_activity_type_hint"
android:imeOptions="actionNext"
android:selectAllOnFocus="true" />
</com.google.android.material.textfield.TextInputLayout>
<ImageView
android:id="@+id/track_edit_activity_type_icon"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_gravity="bottom" />
android:layout_gravity="bottom"
tools:src="@drawable/ic_activity_bike_24dp"/>
</LinearLayout>
<com.google.android.material.textfield.TextInputLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
style="?attr/textInputOutlinedStyle"
android:hint="@string/generic_description"
android:imeOptions="actionNext"
android:importantForAutofill="no">
android:importantForAutofill="no"
android:layout_marginBottom="16dp">
<com.google.android.material.textfield.TextInputEditText
android:id="@+id/track_edit_description"
@@ -83,6 +96,7 @@ limitations under the License.
android:layout_height="wrap_content"
android:inputType="textCapSentences"
android:selectAllOnFocus="true" />
</com.google.android.material.textfield.TextInputLayout>
</LinearLayout>
+1 -1
View File
@@ -69,7 +69,7 @@ limitations under the License.
android:layout_weight="5" />
<TextView
style="@style/TextLarge"
style="?attr/textAppearanceHeadline6"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="22"
-5
View File
@@ -1,5 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="colorAccent">@android:color/holo_orange_dark</color>
<color name="colorAccentTransparent">#55ff8800</color>
</resources>
@@ -0,0 +1,23 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android">
<style name="ThemeCustom" parent="Theme.MaterialComponents.DayNight.NoActionBar">
<item name="colorPrimary">@color/opentracks_secondary_color</item>
<item name="colorPrimaryVariant">@android:color/black</item>
<item name="colorOnPrimary">@android:color/white</item>
<item name="colorSecondary">@color/opentracks_secondary_color</item>
<item name="colorSecondaryVariant">@color/opentracks_secondary_color</item>
<item name="colorOnSecondary">@color/opentracks_on_secondary_color</item>
<item name="android:statusBarColor">?attr/colorPrimaryVariant</item>
<item name="android:colorBackground">@android:color/black</item>
<item name="colorOnBackground">@android:color/white</item>
<item name="colorSurface">@color/opentracks_surface_night_background_color</item>
<item name="colorOnSurface">@color/opentracks_surface_night_on_background_color</item>
<item name="android:activatedBackgroundIndicator">@drawable/activated_background</item>
</style>
</resources>
+19 -2
View File
@@ -14,6 +14,21 @@ See the License for the specific language governing permissions and
limitations under the License.
-->
<resources>
<!-- Brand colors -->
<color name="opentracks_primary_color">#344955</color>
<color name="opentracks_primary_variant_color">#232f34</color>
<color name="opentracks_on_primary_color">@android:color/white</color>
<color name="opentracks_secondary_color">#ff8800</color>
<color name="opentracks_secondary_transparent">#55ff8800</color>
<color name="opentracks_on_secondary_color">@android:color/white</color>
<color name="opentracks_surface_day_background_color">#f5f5f5</color>
<color name="opentracks_surface_day_on_background_color">@android:color/black</color>
<color name="opentracks_surface_night_background_color">@android:color/black</color>
<color name="opentracks_surface_night_on_background_color">@android:color/white</color>
<!-- Chart colors -->
<color name="chart_cadence_border">#FFF128F3</color> <!-- pink -->
<color name="chart_cadence_fill">#40F128F3</color> <!-- transparent pink -->
<color name="chart_altitude_border">#FF339933</color> <!-- green -->
@@ -27,8 +42,10 @@ limitations under the License.
<color name="chart_power_border">#FF7A26C0</color> <!-- purple -->
<color name="chart_power_fill">#407A26C0</color> <!-- transparent purple -->
<color name="colorAccent">@android:color/holo_orange_dark</color>
<color name="colorAccentTransparent">#55FF8800</color>
<!-- Generic colors -->
<color name="red_dark">#ffbe161b</color>
<color name="light_gray">#aaaaaa</color>
<color name="colorBackgroundDelete">#F44336</color>
<color name="colorForegroundDelete">#FEFEFE</color>
+14 -274
View File
@@ -15,7 +15,13 @@ limitations under the License.
-->
<resources xmlns:android="http://schemas.android.com/apk/res/android">
<style name="BottomButton" parent="Widget.AppCompat.Button.Borderless">
<!-- toolbar -->
<style name="Widget.OpenTracks.Toolbar.Surface" parent="Widget.MaterialComponents.Toolbar.Surface">
<item name="android:background">#ff0000</item>
</style>
<!-- bottom bar -->
<style name="BottomButton" parent="Widget.MaterialComponents.Button.TextButton">
<item name="android:layout_height">wrap_content</item>
<item name="android:layout_weight">1</item>
<item name="android:layout_width">0dp</item>
@@ -36,70 +42,20 @@ limitations under the License.
<item name="android:layout_width">match_parent</item>
</style>
<style name="EditCategory" parent="@style/TextMedium">
<item name="android:completionThreshold">1</item>
<item name="android:gravity">bottom</item>
<item name="android:layout_gravity">bottom</item>
<item name="android:layout_width">match_parent</item>
<item name="android:selectAllOnFocus">true</item>
<item name="android:singleLine">true</item>
</style>
<style name="EditDescription" parent="@style/TextMedium">
<item name="android:inputType">textAutoCorrect|textCapSentences|textMultiLine</item>
<item name="android:layout_width">match_parent</item>
<item name="android:maxLines">50</item>
<item name="android:selectAllOnFocus">true</item>
<item name="android:singleLine">false</item>
</style>
<style name="EditLabel" parent="@style/TextMedium">
<item name="android:layout_width">match_parent</item>
</style>
<style name="EditLabel.WithPaddingTop">
<item name="android:paddingTop">16dp</item>
</style>
<style name="EditNameMarker" parent="@style/TextMedium.WithIcon">
<item name="android:inputType">textAutoCorrect|textCapWords</item>
<item name="android:layout_width">match_parent</item>
<item name="android:selectAllOnFocus">true</item>
<item name="android:singleLine">true</item>
</style>
<style name="EditNameTrack" parent="@style/TextMedium">
<item name="android:inputType">textAutoCorrect|textCapWords</item>
<item name="android:layout_width">match_parent</item>
<item name="android:selectAllOnFocus">true</item>
<item name="android:singleLine">true</item>
</style>
<style name="ListEmptyTextView" parent="@style/TextLarge">
<item name="android:gravity">center</item>
<item name="android:layout_gravity">center</item>
<item name="android:padding">8dp</item>
</style>
<style name="ListItemDate" parent="@style/TextSmall">
<item name="android:gravity">right</item>
<item name="android:layout_gravity">bottom</item>
<item name="android:paddingLeft">8dp</item>
<item name="android:singleLine">true</item>
</style>
<!-- scroll view -->
<style name="ScrollView">
<item name="android:layout_height">match_parent</item>
<item name="android:layout_width">match_parent</item>
<item name="android:scrollbarStyle">outsideInset</item>
</style>
<!-- scroll view with bottom buttons -->
<style name="ScrollView.WithBottomButtons">
<item name="android:layout_height">0dp</item>
<item name="android:layout_weight">1</item>
</style>
<!-- sensor state value -->
<!-- stats horizontal line -->
<!-- horizontal line -->
<style name="HorizontalLine">
<item name="android:background">@color/stats_separator</item>
<item name="android:layout_height">1dp</item>
@@ -107,225 +63,9 @@ limitations under the License.
<item name="android:layout_marginBottom">8dp</item>
<item name="android:layout_width">match_parent</item>
</style>
<style name="StatsHorizontalLine" parent="HorizontalLine">
<item name="android:layout_margin">8dp</item>
</style>
<!-- stats large item container -->
<style name="StatsLargeItemContainer">
<item name="android:layout_gravity">center</item>
<item name="android:layout_height">wrap_content</item>
<item name="android:layout_weight">1</item>
<item name="android:layout_width">0dp</item>
<item name="android:orientation">vertical</item>
<item name="android:paddingBottom">6dp</item>
<item name="android:paddingTop">6dp</item>
</style>
<style name="LargeLabel" parent="@style/TextSmall">
<item name="android:textAllCaps">true</item>
<item name="android:textColor">?attr/colorAccent</item>
<item name="android:textStyle">bold</item>
<item name="android:layout_marginTop">8dp</item>
</style>
<style name="IntervalLabel" parent="@style/LargeLabel">
<item name="android:singleLine">true</item>
<item name="android:layout_margin">1dp</item>
<item name="android:textAlignment">textStart</item>
<item name="android:layout_height">wrap_content</item>
<item name="android:layout_weight">1</item>
<item name="android:layout_width">1dp</item>
<item name="android:layout_gravity">center</item>
</style>
<style name="StatsPrimaryLabel" parent="@style/TextMicro">
<item name="android:gravity">center</item>
<item name="android:layout_gravity">center</item>
<item name="android:singleLine">false</item>
<item name="android:textAllCaps">true</item>
<item name="android:textColor">?attr/colorAccent</item>
<item name="android:paddingLeft">4dp</item>
<item name="android:paddingRight">4dp</item>
<item name="android:layout_marginTop">8dp</item>
<item name="android:textStyle">normal</item>
</style>
<style name="StatsSecondaryLabel" parent="@style/TextMicro">
<item name="android:gravity">center</item>
<item name="android:layout_gravity">center</item>
<item name="android:singleLine">false</item>
<item name="android:textAllCaps">true</item>
<item name="android:paddingLeft">4dp</item>
<item name="android:paddingRight">4dp</item>
<item name="android:layout_marginTop">16dp</item>
<item name="android:textStyle">normal</item>
</style>
<style name="StatsLabelHidden" parent="@style/StatsPrimaryLabel">
<item name="android:textColor">@android:color/secondary_text_dark</item>
</style>
<style name="StatsPrimaryValue" parent="@style/TextLarge">
<item name="android:layout_gravity">center</item>
<item name="android:layout_height">wrap_content</item>
<item name="android:layout_width">wrap_content</item>
<item name="android:singleLine">true</item>
<item name="android:textSize">36sp</item>
<item name="android:textStyle">bold</item>
</style>
<style name="StatsSecondaryValue" parent="@style/TextLarge">
<item name="android:layout_gravity">center</item>
<item name="android:layout_height">wrap_content</item>
<item name="android:layout_width">wrap_content</item>
<item name="android:singleLine">true</item>
<item name="android:textSize">28sp</item>
<item name="android:textStyle">bold</item>
</style>
<style name="StatsValueHidden" parent="@style/StatsPrimaryValue">
<item name="android:textColor">@android:color/secondary_text_dark</item>
</style>
<!-- stats large value container -->
<style name="StatsLargeValueContainer">
<item name="android:layout_gravity">center</item>
<item name="android:layout_height">wrap_content</item>
<item name="android:layout_marginTop">-4dp</item>
<item name="android:layout_width">wrap_content</item>
</style>
<!-- stats scroll view -->
<style name="StatsScrollView" parent="@style/ScrollView">
<item name="android:scrollbarStyle">outsideOverlay</item>
</style>
<!-- stats small group container -->
<style name="StatsSmallGroupContainer" parent="@style/StatsLargeItemContainer">
<item name="android:layout_gravity">top|center</item>
<item name="android:paddingTop">12dp</item>
</style>
<!-- stats small item container, for placing inside StatsSmallGroupContainer -->
<style name="StatsSmallItemContainer" parent="@style/StatsLargeItemContainer">
<item name="android:paddingTop">12dp</item>
</style>
<style name="StatsSmallLabel" parent="@style/TextSmall">
<item name="android:gravity">center</item>
<item name="android:layout_gravity">center</item>
<item name="android:singleLine">false</item>
<item name="android:textAllCaps">true</item>
<item name="android:textStyle">bold</item>
<item name="android:layout_marginTop">16dp</item>
</style>
<style name="StatsSmallValue" parent="@style/TextLarge">
<item name="android:layout_gravity">center</item>
<item name="android:singleLine">true</item>
</style>
<style name="StatsTinyValue" parent="@style/TextSmall">
<item name="android:layout_gravity">center</item>
<item name="android:singleLine">true</item>
</style>
<style name="StatsTinyLabel" parent="@style/TextSmall">
<item name="android:gravity">center</item>
<item name="android:layout_gravity">center</item>
<item name="android:singleLine">false</item>
</style>
<style name="StatsSmallValueContainer" parent="@style/StatsLargeValueContainer">
<item name="android:layout_marginTop">-2dp</item>
</style>
<style name="StatsUnit" parent="@style/TextSmall">
<item name="android:layout_gravity">bottom</item>
<item name="android:paddingLeft">4dp</item>
<item name="android:singleLine">true</item>
</style>
<style name="TextLargeStats" parent="TextAppearance.AppCompat.Large">
<item name="android:layout_height">wrap_content</item>
<item name="android:layout_width">wrap_content</item>
<item name="android:paddingLeft">8dp</item>
<item name="android:paddingRight">4dp</item>
<item name="android:layout_marginTop">16dp</item>
</style>
<style name="TextMediumStats" parent="TextAppearance.AppCompat.Medium">
<item name="android:layout_height">wrap_content</item>
<item name="android:layout_width">wrap_content</item>
<item name="android:paddingLeft">8dp</item>
<item name="android:paddingRight">4dp</item>
<item name="android:color">@android:color/secondary_text_light</item>
</style>
<style name="TextSmallStats" parent="TextAppearance.AppCompat.Small">
<item name="android:layout_height">wrap_content</item>
<item name="android:layout_width">wrap_content</item>
<item name="android:paddingLeft">8dp</item>
<item name="android:paddingRight">4dp</item>
<item name="android:paddingTop">8dp</item>
<item name="android:textAlignment">viewEnd</item>
<item name="android:color">@android:color/secondary_text_light</item>
</style>
<style name="IconStats">
<item name="android:layout_width">48dp</item>
<item name="android:layout_height">48dp</item>
<item name="tint">?android:textColorPrimary</item>
</style>
<style name="TextMicro" parent="@style/TextSmall">
<item name="android:textSize">12sp</item>
<item name="android:layout_height">wrap_content</item>
<item name="android:layout_width">wrap_content</item>
</style>
<style name="TextLarge" parent="TextAppearance.AppCompat.Large">
<item name="android:layout_height">wrap_content</item>
<item name="android:layout_width">wrap_content</item>
</style>
<style name="TextMedium" parent="TextAppearance.AppCompat.Medium">
<item name="android:layout_height">wrap_content</item>
<item name="android:layout_width">wrap_content</item>
</style>
<style name="TextMediumPrimary" parent="@style/TextMedium">
<item name="android:textColor">?android:textColorPrimary</item>
<item name="android:layout_height">wrap_content</item>
<item name="android:layout_width">wrap_content</item>
</style>
<style name="TextMedium.WithIcon" style="@style/TextMedium">
<item name="android:drawablePadding">8dp</item>
<item name="android:gravity">center_vertical</item>
</style>
<style name="TextSmall" parent="TextAppearance.AppCompat.Small">
<item name="android:layout_height">wrap_content</item>
<item name="android:layout_width">wrap_content</item>
</style>
<style name="TextImportExportSummaryStart" parent="TextMediumPrimary">
<item name="android:layout_width">0dp</item>
<item name="android:layout_height">wrap_content</item>
<item name="android:layout_marginTop">12dp</item>
<item name="android:layout_marginEnd">8dp</item>
<item name="android:layout_marginStart">24dp</item>
<item name="android:gravity">end</item>
</style>
<style name="TextImportExportSummaryEnd" parent="TextMediumPrimary">
<item name="android:layout_width">0dp</item>
<item name="android:layout_height">wrap_content</item>
<item name="android:layout_marginStart">8dp</item>
<item name="android:layout_marginEnd">24dp</item>
</style>
<style name="ProgressBar" parent="@style/Widget.AppCompat.ProgressBar.Horizontal" />
<!-- Card View for stats -->
<style name="StatsCardView">
<!-- card view -->
<style name="OpenTracksCardView">
<item name="android:layout_width">match_parent</item>
<item name="android:layout_height">wrap_content</item>
<item name="cardElevation">1dp</item>
@@ -336,7 +76,7 @@ limitations under the License.
<!-- Snackbar -->
<style name="MaterialSnackbarTheme" parent="@style/Widget.MaterialComponents.Snackbar">
<item name="materialThemeOverlay">@style/ThemeOverlay.App.Snackbar</item>
<item name="materialThemeOverlay">@style/ThemeOverlay.OpenTracks.Snackbar</item>
<item name="actionTextColorAlpha">1</item>
<item name="backgroundTint">@android:color/holo_red_dark</item>
@@ -353,7 +93,7 @@ limitations under the License.
<item name="android:textSize">14sp</item>
</style>
<style name="ThemeOverlay.App.Snackbar" parent="">
<style name="ThemeOverlay.OpenTracks.Snackbar" parent="">
<item name="colorSurface">@android:color/holo_red_dark</item>
<item name="colorOnSurface">@android:color/holo_red_dark</item>
</style>
+26 -5
View File
@@ -15,20 +15,41 @@ limitations under the License.
-->
<resources xmlns:android="http://schemas.android.com/apk/res/android">
<style name="ThemeCustom" parent="Theme.AppCompat.DayNight.NoActionBar">
<!-- <item name="colorPrimary">TODO</item>-->
<!-- <item name="colorPrimaryDark">TODO</item>-->
<style name="ThemeCustom" parent="Theme.MaterialComponents.DayNight.NoActionBar">
<item name="colorPrimary">@color/opentracks_primary_color</item>
<item name="colorPrimaryVariant">@color/opentracks_primary_variant_color</item>
<item name="colorOnPrimary">@color/opentracks_on_primary_color</item>
<item name="colorAccent">@color/colorAccent</item>
<item name="android:activatedBackgroundIndicator">@drawable/activated_background</item>
<item name="colorSecondary">@color/opentracks_secondary_color</item>
<item name="colorSecondaryVariant">@color/opentracks_secondary_color</item>
<item name="colorOnSecondary">@color/opentracks_on_secondary_color</item>
<item name="colorError">@color/red_dark</item>
<item name="colorOnError">@android:color/white</item>
<item name="android:statusBarColor">?attr/colorPrimaryVariant</item>
<item name="windowActionModeOverlay">true</item>
<item name="android:colorBackground">@android:color/white</item>
<item name="colorOnBackground">@android:color/black</item>
<item name="colorSurface">@color/opentracks_surface_day_background_color</item>
<item name="colorOnSurface">@color/opentracks_surface_day_on_background_color</item>
<item name="android:activatedBackgroundIndicator">@drawable/activated_background</item>
<!-- Snackbar -->
<item name="snackbarStyle">@style/MaterialSnackbarTheme</item>
<item name="snackbarButtonStyle">@style/MaterialSnackbarTextButtonTheme</item>
<item name="snackbarTextViewStyle">@style/MaterialSnackbarTextViewTheme</item>
<!-- Linear progress indicator -->
<item name="linearProgressIndicatorStyle">@style/OpenTracksLinearProgressIndicator</item>
</style>
<style name="OpenTracksLinearProgressIndicator" parent="Widget.MaterialComponents.LinearProgressIndicator">
<item name="indicatorColor">?attr/colorSecondary</item>
</style>
<style name="SplashTheme" parent="ThemeCustom">
+55
View File
@@ -0,0 +1,55 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="TextAppearance.OpenTracks.PrimaryHeader" parent="TextAppearance.MaterialComponents.Subtitle1">
<item name="android:textColor">?attr/colorSecondary</item>
<item name="android:layout_marginTop">8dp</item>
<item name="android:textStyle">bold</item>
<item name="android:textAllCaps">true</item>
<item name="android:singleLine">true</item>
</style>
<style name="TextAppearance.OpenTracks.SecondaryHeader" parent="TextAppearance.MaterialComponents.Subtitle2">
<item name="android:layout_marginTop">8dp</item>
<item name="android:textAllCaps">true</item>
<item name="android:singleLine">true</item>
</style>
<style name="TextAppearance.OpenTracks.HiddenHeader" parent="TextAppearance.MaterialComponents.Subtitle1">
<item name="android:textColor">@color/light_gray</item>
<item name="android:layout_marginTop">8dp</item>
<item name="android:textAllCaps">true</item>
<item name="android:singleLine">true</item>
</style>
<style name="TextAppearance.OpenTracks.PrimaryValue" parent="TextAppearance.MaterialComponents.Headline4">
<item name="android:textColor">?attr/colorOnBackground</item>
<item name="android:layout_gravity">center</item>
<item name="android:textStyle">bold</item>
<item name="android:singleLine">true</item>
<item name="android:layout_marginTop">8dp</item>
<item name="android:layout_marginBottom">8dp</item>
</style>
<style name="TextAppearance.OpenTracks.SecondaryValue" parent="TextAppearance.MaterialComponents.Headline5">
<item name="android:textColor">?attr/colorOnBackground</item>
<item name="android:layout_gravity">center</item>
<item name="android:textStyle">bold</item>
<item name="android:singleLine">true</item>
<item name="android:layout_marginTop">8dp</item>
<item name="android:layout_marginBottom">8dp</item>
</style>
<style name="TextAppearance.OpenTracks.HiddenValue" parent="TextAppearance.MaterialComponents.Headline4">
<item name="android:textColor">@color/light_gray</item>
<item name="android:layout_gravity">center</item>
<item name="android:textStyle">bold</item>
<item name="android:singleLine">true</item>
<item name="android:layout_marginTop">8dp</item>
<item name="android:layout_marginBottom">8dp</item>
</style>
<style name="TextAppearance.OpenTracks.PrimaryUnit" parent="TextAppearance.MaterialComponents.Caption">
<item name="android:textColor">?attr/colorOnBackground</item>
<item name="android:singleLine">true</item>
</style>
</resources>