From 2a34c6a5aa2fabb47a988fd92559111937df07b6 Mon Sep 17 00:00:00 2001 From: Alexander Sytnyk Date: Thu, 3 Aug 2017 11:48:26 +0300 Subject: [PATCH 01/12] Rename menu item, move menu divider; add some code for save as gpx --- OsmAnd/res/layout/save_gpx_dialog.xml | 61 +++++++++++++++++++ OsmAnd/res/values/strings.xml | 4 +- .../plus/activities/MapActivityActions.java | 38 ++++++------ .../MeasurementToolFragment.java | 23 ++++++- .../measurementtool/MeasurementToolLayer.java | 2 +- 5 files changed, 106 insertions(+), 22 deletions(-) create mode 100644 OsmAnd/res/layout/save_gpx_dialog.xml diff --git a/OsmAnd/res/layout/save_gpx_dialog.xml b/OsmAnd/res/layout/save_gpx_dialog.xml new file mode 100644 index 0000000000..38ab5265d7 --- /dev/null +++ b/OsmAnd/res/layout/save_gpx_dialog.xml @@ -0,0 +1,61 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/OsmAnd/res/values/strings.xml b/OsmAnd/res/values/strings.xml index 03eeb868bc..32fe5e257c 100644 --- a/OsmAnd/res/values/strings.xml +++ b/OsmAnd/res/values/strings.xml @@ -9,8 +9,10 @@ 3. All your modified/created strings are in the top of the file (to make easier find what\'s translated). PLEASE: Have a look at http://code.google.com/p/osmand/wiki/UIConsistency, it may really improve your and our work :-) Thx - Hardy --> + Enter name for GPX + Show on map after saving Select a location on the map and click "Add" to add a point to the ruler. - Measurement tool + Measure distance Resume/Pause Navigation Press this button to pause the navigation, or to resume it if it was already paused. Show Finish navigation dialog diff --git a/OsmAnd/src/net/osmand/plus/activities/MapActivityActions.java b/OsmAnd/src/net/osmand/plus/activities/MapActivityActions.java index 19a617f998..31d29d860b 100644 --- a/OsmAnd/src/net/osmand/plus/activities/MapActivityActions.java +++ b/OsmAnd/src/net/osmand/plus/activities/MapActivityActions.java @@ -696,21 +696,6 @@ public class MapActivityActions implements DialogProvider { } }).createItem()); - optionsMenuHelper.addItem(new ContextMenuItem.ItemBuilder().setTitleId(R.string.measurement_tool, mapActivity) - .setIcon(R.drawable.ic_action_ruler) - .setListener(new ContextMenuAdapter.ItemClickListener() { - @Override - public boolean onContextMenuClick(ArrayAdapter adapter, int itemId, int position, boolean isChecked) { - MeasurementToolFragment fragment = new MeasurementToolFragment(); - mapActivity.getSupportFragmentManager() - .beginTransaction() - .add(R.id.bottomFragmentContainer, fragment, MeasurementToolFragment.TAG) - .addToBackStack(MeasurementToolFragment.TAG) - .commitAllowingStateLoss(); - return true; - } - }).createItem()); - optionsMenuHelper.addItem(new ItemBuilder().setTitleId(R.string.get_directions, mapActivity) .setIcon(R.drawable.ic_action_gdirections_dark) .setListener(new ContextMenuAdapter.ItemClickListener() { @@ -774,6 +759,21 @@ public class MapActivityActions implements DialogProvider { }).createItem()); */ + optionsMenuHelper.addItem(new ContextMenuItem.ItemBuilder().setTitleId(R.string.measurement_tool, mapActivity) + .setIcon(R.drawable.ic_action_ruler) + .setListener(new ContextMenuAdapter.ItemClickListener() { + @Override + public boolean onContextMenuClick(ArrayAdapter adapter, int itemId, int position, boolean isChecked) { + MeasurementToolFragment fragment = new MeasurementToolFragment(); + mapActivity.getSupportFragmentManager() + .beginTransaction() + .add(R.id.bottomFragmentContainer, fragment, MeasurementToolFragment.TAG) + .addToBackStack(MeasurementToolFragment.TAG) + .commitAllowingStateLoss(); + return true; + } + }).createItem()); + optionsMenuHelper.addItem(new ItemBuilder().setTitleId(R.string.prefs_plugins, mapActivity) .setIcon(R.drawable.ic_extension_dark) .setListener(new ItemClickListener() { @@ -843,16 +843,16 @@ public class MapActivityActions implements DialogProvider { //////////// Others OsmandPlugin.registerOptionsMenu(mapActivity, optionsMenuHelper); - int pluginsItemIndex = -1; + int measureDistanceItemIndex = -1; for (int i = 0; i < optionsMenuHelper.length(); i++) { - if (optionsMenuHelper.getItem(i).getTitleId() == R.string.prefs_plugins) { - pluginsItemIndex = i; + if (optionsMenuHelper.getItem(i).getTitleId() == R.string.measurement_tool) { + measureDistanceItemIndex = i; break; } } ItemBuilder divider = new ItemBuilder().setLayout(R.layout.drawer_divider); - divider.setPosition(pluginsItemIndex >= 0 ? pluginsItemIndex : 7); + divider.setPosition(measureDistanceItemIndex >= 0 ? measureDistanceItemIndex : 8); optionsMenuHelper.addItem(divider.createItem()); getMyApplication().getAppCustomization().prepareOptionsMenu(mapActivity, optionsMenuHelper); diff --git a/OsmAnd/src/net/osmand/plus/measurementtool/MeasurementToolFragment.java b/OsmAnd/src/net/osmand/plus/measurementtool/MeasurementToolFragment.java index 5e1d1fbd87..a7114d815f 100644 --- a/OsmAnd/src/net/osmand/plus/measurementtool/MeasurementToolFragment.java +++ b/OsmAnd/src/net/osmand/plus/measurementtool/MeasurementToolFragment.java @@ -1,14 +1,17 @@ package net.osmand.plus.measurementtool; +import android.content.DialogInterface; import android.os.Bundle; import android.support.annotation.Nullable; import android.support.v4.app.Fragment; +import android.support.v7.app.AlertDialog; import android.view.ContextThemeWrapper; import android.view.LayoutInflater; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.view.ViewGroup; +import android.widget.EditText; import android.widget.ImageButton; import android.widget.ImageView; import android.widget.TextView; @@ -134,7 +137,7 @@ public class MeasurementToolFragment extends Fragment { public boolean onMenuItemClick(MenuItem menuItem) { switch (menuItem.getItemId()) { case R.id.action_save_as_gpx: - Toast.makeText(mapActivity, "Save as gpx", Toast.LENGTH_SHORT).show(); + saveAsGpxOnClick(mapActivity); return true; case R.id.action_clear_all: measurementLayer.clearPoints(); @@ -154,6 +157,24 @@ public class MeasurementToolFragment extends Fragment { return view; } + private void saveAsGpxOnClick(MapActivity mapActivity) { + LayoutInflater inflater = getLayoutInflater(); + final View view = inflater.inflate(R.layout.save_gpx_dialog, null); + EditText nameEt = view.findViewById(R.id.gpx_name_et); + + new AlertDialog.Builder(mapActivity) + .setTitle(R.string.enter_gpx_name) + .setView(view) + .setPositiveButton(R.string.shared_string_save, new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + + } + }) + .setNegativeButton(R.string.shared_string_cancel, null) + .show(); + } + @Override public void onDestroyView() { super.onDestroyView(); diff --git a/OsmAnd/src/net/osmand/plus/measurementtool/MeasurementToolLayer.java b/OsmAnd/src/net/osmand/plus/measurementtool/MeasurementToolLayer.java index a0b9af50dc..451fa60093 100644 --- a/OsmAnd/src/net/osmand/plus/measurementtool/MeasurementToolLayer.java +++ b/OsmAnd/src/net/osmand/plus/measurementtool/MeasurementToolLayer.java @@ -25,7 +25,7 @@ public class MeasurementToolLayer extends OsmandMapLayer { private OsmandMapTileView view; private boolean inMeasurementMode; private LinkedList measurementPoints = new LinkedList<>(); - private LinkedList cacheMeasurementPoints; + private LinkedList cacheMeasurementPoints = new LinkedList<>(); private Bitmap centerIconDay; private Bitmap centerIconNight; private Bitmap pointIcon; From 6af21749fb4c2385f7af32c32b6301945d7fb4fa Mon Sep 17 00:00:00 2001 From: Alexander Sytnyk Date: Thu, 3 Aug 2017 12:51:06 +0300 Subject: [PATCH 02/12] Change layout for "Save as GPX" dialog; add some logic --- OsmAnd/res/layout/save_gpx_dialog.xml | 5 +-- .../MeasurementToolFragment.java | 42 +++++++++++++++++++ 2 files changed, 44 insertions(+), 3 deletions(-) diff --git a/OsmAnd/res/layout/save_gpx_dialog.xml b/OsmAnd/res/layout/save_gpx_dialog.xml index 38ab5265d7..7ae9fc7579 100644 --- a/OsmAnd/res/layout/save_gpx_dialog.xml +++ b/OsmAnd/res/layout/save_gpx_dialog.xml @@ -3,7 +3,6 @@ xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" - android:animateLayoutChanges="true" android:orientation="vertical"> + android:visibility="invisible"/> Date: Thu, 3 Aug 2017 13:30:27 +0300 Subject: [PATCH 03/12] Add some code --- .../MeasurementToolFragment.java | 50 ++++++++++++++++--- 1 file changed, 44 insertions(+), 6 deletions(-) diff --git a/OsmAnd/src/net/osmand/plus/measurementtool/MeasurementToolFragment.java b/OsmAnd/src/net/osmand/plus/measurementtool/MeasurementToolFragment.java index 036539879c..4ba046e1d7 100644 --- a/OsmAnd/src/net/osmand/plus/measurementtool/MeasurementToolFragment.java +++ b/OsmAnd/src/net/osmand/plus/measurementtool/MeasurementToolFragment.java @@ -1,6 +1,8 @@ package net.osmand.plus.measurementtool; +import android.app.ProgressDialog; import android.content.DialogInterface; +import android.os.AsyncTask; import android.os.Bundle; import android.support.annotation.Nullable; import android.support.v4.app.Fragment; @@ -37,6 +39,7 @@ import java.util.Locale; public class MeasurementToolFragment extends Fragment { public static final String TAG = "MeasurementToolFragment"; + private static final String EXT = ".gpx"; private MeasurementToolBarController toolBarController; private TextView distanceTv; @@ -167,22 +170,23 @@ public class MeasurementToolFragment extends Fragment { private void saveAsGpxOnClick(MapActivity mapActivity) { final File dir = mapActivity.getMyApplication().getAppPath(IndexConstants.GPX_INDEX_DIR); - LayoutInflater inflater = getLayoutInflater(); + final LayoutInflater inflater = getLayoutInflater(); final View view = inflater.inflate(R.layout.save_gpx_dialog, null); - EditText nameEt = view.findViewById(R.id.gpx_name_et); + final EditText nameEt = view.findViewById(R.id.gpx_name_et); final TextView fileExistsTv = view.findViewById(R.id.file_exists_text_view); final String suggestedName = new SimpleDateFormat("dd-M-yyyy hh:mm", Locale.US).format(new Date()); String displayedName = String.copyValueOf(suggestedName.toCharArray()); - File fout = new File(dir, suggestedName + ".gpx"); + File fout = new File(dir, suggestedName + EXT); int ind = 1; while (fout.exists()) { displayedName = suggestedName + " " + (++ind); - fout = new File(dir, displayedName + ".gpx"); + fout = new File(dir, displayedName + EXT); } nameEt.setText(displayedName); nameEt.setSelection(displayedName.length()); + final boolean[] textChanged = new boolean[1]; nameEt.addTextChangedListener(new TextWatcher() { @Override public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) { @@ -196,11 +200,12 @@ public class MeasurementToolFragment extends Fragment { @Override public void afterTextChanged(Editable editable) { - if (new File(dir, editable.toString() + ".gpx").exists()) { + if (new File(dir, editable.toString() + EXT).exists()) { fileExistsTv.setVisibility(View.VISIBLE); } else { fileExistsTv.setVisibility(View.INVISIBLE); } + textChanged[0] = true; } }); @@ -210,13 +215,46 @@ public class MeasurementToolFragment extends Fragment { .setPositiveButton(R.string.shared_string_save, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { - + final String name = nameEt.getText().toString(); + String fileName = String.copyValueOf(name.toCharArray()) + EXT; + if (textChanged[0]) { + File fout = new File(dir, fileName); + int ind = 1; + while (fout.exists()) { + fileName = name + " " + (++ind) + EXT; + fout = new File(dir, fileName); + } + } + saveGpx(fileName); } }) .setNegativeButton(R.string.shared_string_cancel, null) .show(); } + private void saveGpx(final String fileName) { + new AsyncTask() { + + private ProgressDialog progressDialog; + private File toSave; + + @Override + protected void onPreExecute() { + super.onPreExecute(); + } + + @Override + protected String doInBackground(Void... voids) { + return null; + } + + @Override + protected void onPostExecute(String s) { + super.onPostExecute(s); + } + }.execute(); + } + @Override public void onDestroyView() { super.onDestroyView(); From f88ba653c4b75d15266b118471eb42cd8a293ddd Mon Sep 17 00:00:00 2001 From: Alexander Sytnyk Date: Thu, 3 Aug 2017 14:55:28 +0300 Subject: [PATCH 04/12] Add ability to save GPX --- .../MeasurementToolFragment.java | 69 ++++++++++++++++--- .../measurementtool/MeasurementToolLayer.java | 4 ++ 2 files changed, 64 insertions(+), 9 deletions(-) diff --git a/OsmAnd/src/net/osmand/plus/measurementtool/MeasurementToolFragment.java b/OsmAnd/src/net/osmand/plus/measurementtool/MeasurementToolFragment.java index 4ba046e1d7..cb2e08c8fd 100644 --- a/OsmAnd/src/net/osmand/plus/measurementtool/MeasurementToolFragment.java +++ b/OsmAnd/src/net/osmand/plus/measurementtool/MeasurementToolFragment.java @@ -7,6 +7,7 @@ import android.os.Bundle; import android.support.annotation.Nullable; import android.support.v4.app.Fragment; import android.support.v7.app.AlertDialog; +import android.support.v7.widget.SwitchCompat; import android.text.Editable; import android.text.TextWatcher; import android.view.ContextThemeWrapper; @@ -23,6 +24,9 @@ import android.widget.Toast; import net.osmand.AndroidUtils; import net.osmand.IndexConstants; +import net.osmand.plus.GPXUtilities; +import net.osmand.plus.GPXUtilities.Route; +import net.osmand.plus.GPXUtilities.WptPt; import net.osmand.plus.IconsCache; import net.osmand.plus.R; import net.osmand.plus.activities.MapActivity; @@ -32,10 +36,14 @@ import net.osmand.plus.views.mapwidgets.MapInfoWidgetsFactory.TopToolbarControll import net.osmand.plus.widgets.IconPopupMenu; import java.io.File; +import java.text.MessageFormat; import java.text.SimpleDateFormat; import java.util.Date; +import java.util.LinkedList; import java.util.Locale; +import static net.osmand.plus.GPXUtilities.GPXFile; + public class MeasurementToolFragment extends Fragment { public static final String TAG = "MeasurementToolFragment"; @@ -148,7 +156,12 @@ public class MeasurementToolFragment extends Fragment { public boolean onMenuItemClick(MenuItem menuItem) { switch (menuItem.getItemId()) { case R.id.action_save_as_gpx: - saveAsGpxOnClick(mapActivity); + if (measurementLayer.getPointsCount() > 0) { + saveAsGpxOnClick(mapActivity); + } else { + //todo + Toast.makeText(mapActivity, "There must be at least one point", Toast.LENGTH_SHORT).show(); + } return true; case R.id.action_clear_all: measurementLayer.clearPoints(); @@ -172,10 +185,11 @@ public class MeasurementToolFragment extends Fragment { final File dir = mapActivity.getMyApplication().getAppPath(IndexConstants.GPX_INDEX_DIR); final LayoutInflater inflater = getLayoutInflater(); final View view = inflater.inflate(R.layout.save_gpx_dialog, null); - final EditText nameEt = view.findViewById(R.id.gpx_name_et); - final TextView fileExistsTv = view.findViewById(R.id.file_exists_text_view); + final EditText nameEt = (EditText) view.findViewById(R.id.gpx_name_et); + final TextView fileExistsTv = (TextView) view.findViewById(R.id.file_exists_text_view); + final SwitchCompat showOnMapToggle = (SwitchCompat) view.findViewById(R.id.toggle_show_on_map); - final String suggestedName = new SimpleDateFormat("dd-M-yyyy hh:mm", Locale.US).format(new Date()); + final String suggestedName = new SimpleDateFormat("yyyy-M-dd hh-mm E", Locale.US).format(new Date()); String displayedName = String.copyValueOf(suggestedName.toCharArray()); File fout = new File(dir, suggestedName + EXT); int ind = 1; @@ -225,14 +239,14 @@ public class MeasurementToolFragment extends Fragment { fout = new File(dir, fileName); } } - saveGpx(fileName); + saveGpx(dir, fileName, showOnMapToggle.isChecked()); } }) .setNegativeButton(R.string.shared_string_cancel, null) .show(); } - private void saveGpx(final String fileName) { + private void saveGpx(final File dir, final String fileName, final boolean showOnMap) { new AsyncTask() { private ProgressDialog progressDialog; @@ -240,17 +254,54 @@ public class MeasurementToolFragment extends Fragment { @Override protected void onPreExecute() { - super.onPreExecute(); + MapActivity activity = getMapActivity(); + if (activity != null) { + progressDialog = new ProgressDialog(activity); + progressDialog.setMessage(activity.getString(R.string.saving_gpx_tracks)); + progressDialog.show(); + } } @Override protected String doInBackground(Void... voids) { + toSave = new File(dir, fileName); + GPXFile gpx = new GPXFile(); + MeasurementToolLayer measurementLayer = getMeasurementLayer(); + if (measurementLayer != null) { + LinkedList points = measurementLayer.getMeasurementPoints(); + if (points.size() == 1) { + gpx.points.add(points.getFirst()); + } else if (points.size() > 1) { + Route rt = new Route(); + gpx.routes.add(rt); + rt.points.addAll(points); + } + } + MapActivity activity = getMapActivity(); + if (activity != null) { + // todo + String res = GPXUtilities.writeGpxFile(toSave, gpx, activity.getMyApplication()); + activity.getMyApplication().getSelectedGpxHelper().selectGpxFile(gpx, showOnMap, false); + return res; + } return null; } @Override - protected void onPostExecute(String s) { - super.onPostExecute(s); + protected void onPostExecute(String warning) { + MapActivity activity = getMapActivity(); + if (activity != null) { + if (warning == null) { + Toast.makeText(activity, + MessageFormat.format(activity.getString(R.string.gpx_saved_sucessfully), toSave.getAbsolutePath()), + Toast.LENGTH_LONG).show(); + } else { + Toast.makeText(activity, warning, Toast.LENGTH_LONG).show(); + } + } + if (progressDialog != null && progressDialog.isShowing()) { + progressDialog.dismiss(); + } } }.execute(); } diff --git a/OsmAnd/src/net/osmand/plus/measurementtool/MeasurementToolLayer.java b/OsmAnd/src/net/osmand/plus/measurementtool/MeasurementToolLayer.java index 451fa60093..b3c831ad82 100644 --- a/OsmAnd/src/net/osmand/plus/measurementtool/MeasurementToolLayer.java +++ b/OsmAnd/src/net/osmand/plus/measurementtool/MeasurementToolLayer.java @@ -66,6 +66,10 @@ public class MeasurementToolLayer extends OsmandMapLayer { return measurementPoints.size(); } + public LinkedList getMeasurementPoints() { + return measurementPoints; + } + String getDistanceSt() { float dist = 0; if (measurementPoints.size() > 0) { From 3cdb63a669753708b4d7bbf20f2a4d3cc8f51b35 Mon Sep 17 00:00:00 2001 From: Alexander Sytnyk Date: Thu, 3 Aug 2017 15:54:00 +0300 Subject: [PATCH 05/12] Add string --- OsmAnd/res/values/strings.xml | 1 + .../osmand/plus/measurementtool/MeasurementToolFragment.java | 3 +-- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/OsmAnd/res/values/strings.xml b/OsmAnd/res/values/strings.xml index 32fe5e257c..884d826ffc 100644 --- a/OsmAnd/res/values/strings.xml +++ b/OsmAnd/res/values/strings.xml @@ -9,6 +9,7 @@ 3. All your modified/created strings are in the top of the file (to make easier find what\'s translated). PLEASE: Have a look at http://code.google.com/p/osmand/wiki/UIConsistency, it may really improve your and our work :-) Thx - Hardy --> + You need to add at least one point. Enter name for GPX Show on map after saving Select a location on the map and click "Add" to add a point to the ruler. diff --git a/OsmAnd/src/net/osmand/plus/measurementtool/MeasurementToolFragment.java b/OsmAnd/src/net/osmand/plus/measurementtool/MeasurementToolFragment.java index cb2e08c8fd..55900ff2d5 100644 --- a/OsmAnd/src/net/osmand/plus/measurementtool/MeasurementToolFragment.java +++ b/OsmAnd/src/net/osmand/plus/measurementtool/MeasurementToolFragment.java @@ -159,8 +159,7 @@ public class MeasurementToolFragment extends Fragment { if (measurementLayer.getPointsCount() > 0) { saveAsGpxOnClick(mapActivity); } else { - //todo - Toast.makeText(mapActivity, "There must be at least one point", Toast.LENGTH_SHORT).show(); + Toast.makeText(mapActivity, mapActivity.getString(R.string.none_point_error), Toast.LENGTH_SHORT).show(); } return true; case R.id.action_clear_all: From 307c77e5a2dca08b3cf06c00bd95660bf4231f1f Mon Sep 17 00:00:00 2001 From: Alexander Sytnyk Date: Thu, 3 Aug 2017 17:31:38 +0300 Subject: [PATCH 06/12] Draw points over lines --- .../plus/measurementtool/MeasurementToolLayer.java | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/OsmAnd/src/net/osmand/plus/measurementtool/MeasurementToolLayer.java b/OsmAnd/src/net/osmand/plus/measurementtool/MeasurementToolLayer.java index b3c831ad82..8cc17bcd27 100644 --- a/OsmAnd/src/net/osmand/plus/measurementtool/MeasurementToolLayer.java +++ b/OsmAnd/src/net/osmand/plus/measurementtool/MeasurementToolLayer.java @@ -108,16 +108,19 @@ public class MeasurementToolLayer extends OsmandMapLayer { } tx.add(locX); ty.add(locY); - - if (tb.containsLatLon(pt.lat, pt.lon)) { - canvas.drawBitmap(pointIcon, locX - marginX, locY - marginY, bitmapPaint); - } } path.lineTo(tb.getCenterPixelX(), tb.getCenterPixelY()); tx.add(tb.getCenterPixelX()); ty.add(tb.getCenterPixelY()); calculatePath(tb, tx, ty, path); canvas.drawPath(path, lineAttrs.paint); + for (WptPt pt : measurementPoints) { + if (tb.containsLatLon(pt.lat, pt.lon)) { + int locX = tb.getPixXFromLonNoRot(pt.lon); + int locY = tb.getPixYFromLatNoRot(pt.lat); + canvas.drawBitmap(pointIcon, locX - marginX, locY - marginY, bitmapPaint); + } + } } } } From ddba6ba410e7a821ee362d9870f2871d55e8a3b1 Mon Sep 17 00:00:00 2001 From: Alexander Sytnyk Date: Thu, 3 Aug 2017 18:59:55 +0300 Subject: [PATCH 07/12] Add some code --- .../res/layout/fragment_measurement_tool.xml | 38 ++++++++++++++----- .../MeasurementToolFragment.java | 32 +++++++++++++--- 2 files changed, 55 insertions(+), 15 deletions(-) diff --git a/OsmAnd/res/layout/fragment_measurement_tool.xml b/OsmAnd/res/layout/fragment_measurement_tool.xml index 7ad35e3364..9b2d999161 100644 --- a/OsmAnd/res/layout/fragment_measurement_tool.xml +++ b/OsmAnd/res/layout/fragment_measurement_tool.xml @@ -43,11 +43,9 @@ android:layout_alignParentEnd="true" android:layout_alignParentRight="true" android:layout_centerVertical="true" - android:layout_marginEnd="16dp" - android:layout_marginLeft="16dp" - android:layout_marginRight="16dp" - android:layout_marginStart="16dp" android:background="@null" + android:paddingEnd="16dp" + android:paddingStart="16dp" tools:src="@drawable/ic_action_arrow_down"/> + + + + + + + + + @@ -94,11 +114,9 @@ android:layout_alignParentLeft="true" android:layout_alignParentStart="true" android:layout_centerVertical="true" - android:layout_marginEnd="16dp" - android:layout_marginLeft="16dp" - android:layout_marginRight="16dp" - android:layout_marginStart="16dp" android:background="@null" + android:paddingEnd="16dp" + android:paddingStart="16dp" tools:src="@drawable/ic_action_undo_dark"/>