Merge branch 'master' of https://github.com/osmandapp/Osmand into slope_hillshade_ui

This commit is contained in:
veliymolfar 2020-03-12 10:25:48 +02:00
commit d361f78f1f
73 changed files with 586 additions and 494 deletions

View file

@ -156,7 +156,7 @@
<string name="shared_string_hour_short">г</string>
<string name="shared_string_minute_short">хв</string>
<string name="shared_string_second_short">сек</string>
<string name="welcome_descr"> <b>OsmAnd Tracker</b> дозволяє Вам транслювати свою позицію та бачити позицію інших в OsmAnd.<br/> <br/>Застосунок використовує Telegram API та потребує облікового запису Telegram.</string>
<string name="welcome_descr"><b>OsmAnd Tracker</b> дозволяє Вам транслювати свою позицію та бачити позицію інших в OsmAnd.<br/><br/>Застосунок використовує Telegram API та потребує облікового запису Telegram.</string>
<string name="my_location">Моя позиція</string>
<string name="send_my_location_desc">Встановіть мінімальний інтервал між надсиланням позиції.</string>
<string name="expire_at">Діє до</string>

View file

@ -10,90 +10,106 @@
app:contentInsetLeft="4dp"
app:contentInsetStart="4dp">
<ImageView
android:id="@+id/toolbar_back"
android:contentDescription="@string/back_to_map"
android:layout_width="@dimen/list_item_height"
android:layout_height="match_parent"
android:layout_gravity="start"
android:background="@drawable/dashboard_button_light"
android:scaleType="center"
android:src="@drawable/ic_arrow_back"
tools:visibility="visible"/>
<ImageView
android:id="@+id/toolbar_list"
android:contentDescription="@string/backToMenu"
android:layout_width="@dimen/list_item_height"
android:layout_height="match_parent"
android:layout_gravity="start"
android:background="@drawable/dashboard_button_light"
android:scaleType="center"
android:src="@drawable/ic_navigation_drawer"
tools:visibility="gone"/>
<ImageView
android:id="@+id/toolbar_settings"
android:contentDescription="@string/shared_string_settings"
android:layout_width="@dimen/list_item_height"
android:layout_height="match_parent"
android:layout_gravity="end"
android:background="@drawable/dashboard_button_light"
android:scaleType="center"
android:src="@drawable/ic_configure_screen_dark"/>
<TextView
android:id="@+id/toolbar_text"
android:layout_width="wrap_content"
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="start"
android:scaleType="center"
android:textColor="@color/abc_primary_text_material_dark"
android:textSize="@dimen/abc_text_size_large_material"
tools:text="Toolbar"
tools:visibility="visible"/>
android:gravity="center_vertical"
android:orientation="horizontal">
<ImageView
android:id="@+id/toolbar_ok"
android:contentDescription="@string/shared_string_ok"
android:layout_width="@dimen/list_item_height"
android:layout_height="match_parent"
android:layout_gravity="end"
android:background="@drawable/dashboard_button_light"
android:scaleType="center"
android:src="@drawable/ic_action_done"/>
<LinearLayout
android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="wrap_content"
android:gravity="start"
android:orientation="horizontal">
<ImageView
android:id="@+id/toolbar_sort"
android:contentDescription="@string/intermediate_points_change_order"
android:layout_width="@dimen/list_item_height"
android:layout_height="match_parent"
android:layout_gravity="end"
android:background="@drawable/dashboard_button_light"
android:scaleType="center"
android:src="@drawable/ic_sort_waypoint_dark"/>
<ImageView
android:id="@+id/toolbar_back"
android:contentDescription="@string/back_to_map"
android:layout_width="@dimen/list_item_height"
android:layout_height="match_parent"
android:background="@drawable/dashboard_button_light"
android:scaleType="center"
android:src="@drawable/ic_arrow_back"
tools:visibility="visible"/>
<ImageView
android:id="@+id/toolbar_list"
android:contentDescription="@string/backToMenu"
android:layout_width="@dimen/list_item_height"
android:layout_height="match_parent"
android:background="@drawable/dashboard_button_light"
android:scaleType="center"
android:src="@drawable/ic_navigation_drawer"
tools:visibility="gone"/>
<ImageView
android:id="@+id/toolbar_flat"
android:contentDescription="@string/drawer"
android:layout_width="@dimen/list_item_height"
android:layout_height="match_parent"
android:layout_gravity="end"
android:background="@drawable/dashboard_button_light"
android:scaleType="center"
android:src="@drawable/ic_flat_list_dark"
android:visibility="gone"/>
<TextView
android:id="@+id/toolbar_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:scaleType="center"
android:textColor="@color/abc_primary_text_material_dark"
android:textSize="@dimen/abc_text_size_large_material"
tools:text="Toolbar"
tools:visibility="visible"/>
<ImageView
android:id="@+id/toolbar_edit"
android:contentDescription="@string/shared_string_edit"
android:layout_width="@dimen/list_item_height"
android:layout_height="match_parent"
android:layout_gravity="end"
android:background="@drawable/dashboard_button_light"
android:scaleType="center"
android:src="@drawable/ic_action_edit_dark"
android:visibility="gone"/>
</LinearLayout>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="end"
android:orientation="horizontal">
<ImageView
android:id="@+id/toolbar_settings"
android:contentDescription="@string/shared_string_settings"
android:layout_width="@dimen/list_item_height"
android:layout_height="match_parent"
android:layout_gravity="end"
android:background="@drawable/dashboard_button_light"
android:scaleType="center"
android:src="@drawable/ic_configure_screen_dark"/>
<ImageView
android:id="@+id/toolbar_ok"
android:contentDescription="@string/shared_string_ok"
android:layout_width="@dimen/list_item_height"
android:layout_height="match_parent"
android:background="@drawable/dashboard_button_light"
android:scaleType="center"
android:src="@drawable/ic_action_done"/>
<ImageView
android:id="@+id/toolbar_sort"
android:contentDescription="@string/intermediate_points_change_order"
android:layout_width="@dimen/list_item_height"
android:layout_height="match_parent"
android:background="@drawable/dashboard_button_light"
android:scaleType="center"
android:src="@drawable/ic_sort_waypoint_dark"/>
<ImageView
android:id="@+id/toolbar_flat"
android:contentDescription="@string/drawer"
android:layout_width="@dimen/list_item_height"
android:layout_height="match_parent"
android:background="@drawable/dashboard_button_light"
android:scaleType="center"
android:src="@drawable/ic_flat_list_dark"
android:visibility="gone"/>
<ImageView
android:id="@+id/toolbar_edit"
android:contentDescription="@string/shared_string_edit"
android:layout_width="@dimen/list_item_height"
android:layout_height="match_parent"
android:background="@drawable/dashboard_button_light"
android:scaleType="center"
android:src="@drawable/ic_action_edit_dark"
android:visibility="gone"/>
</LinearLayout>
</LinearLayout>
</androidx.appcompat.widget.Toolbar>

View file

@ -19,9 +19,11 @@
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingLeft="@dimen/list_content_padding"
android:paddingStart="@dimen/list_content_padding"
android:paddingRight="0dp"
android:paddingEnd="0dp"
android:minHeight="@dimen/list_item_height"
android:background="?attr/expandable_list_item_background"
android:paddingStart="@dimen/list_content_padding">
android:background="?attr/expandable_list_item_background">
<CheckBox
android:id="@+id/toggle_item"
@ -50,7 +52,7 @@
android:textSize="@dimen/default_list_text_size"
osmand:typeface="@string/font_roboto_medium"
tools:text="Category name"
android:layout_marginStart="@dimen/list_content_padding" />
android:layout_marginStart="@dimen/list_content_padding" />
<ImageView
android:id="@+id/options"
@ -65,7 +67,7 @@
android:src="@drawable/ic_overflow_menu_white"
android:visibility="gone"
tools:visiblity="visible"
android:layout_marginEnd="4dp" />
android:layout_marginEnd="4dp" />
<ImageView
android:id="@+id/explist_indicator"
@ -74,7 +76,7 @@
android:scaleType="center"
android:layout_gravity="center_vertical"
android:layout_marginRight="@dimen/list_content_padding"
android:layout_marginEnd="@dimen/list_content_padding" />
android:layout_marginEnd="@dimen/list_content_padding" />
</LinearLayout>

View file

@ -24,12 +24,12 @@
android:id="@+id/searchEditText"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginLeft="16dp"
android:layout_marginLeft="@dimen/content_padding"
android:layout_marginStart="@dimen/content_padding"
android:background="@null"
android:gravity="center_vertical"
android:lines="1"
tools:text="Search request"
android:layout_marginStart="16dp" />
tools:text="Search request" />
</LinearLayout>
<FrameLayout

View file

@ -35,13 +35,13 @@
android:id="@+id/back_button_flow"
android:layout_width="@dimen/route_info_toolbar_button_size"
android:layout_height="@dimen/route_info_toolbar_button_size"
android:layout_marginLeft="8dp"
android:layout_marginTop="8dp"
android:layout_marginLeft="@dimen/content_padding_half"
android:layout_marginTop="@dimen/content_padding_half"
android:layout_marginStart="@dimen/content_padding_half"
android:background="@drawable/btn_circle_transparent_full"
android:contentDescription="@string/shared_string_back"
android:src="@drawable/ic_arrow_back"
android:tint="?attr/text_color_tab_active_white"
android:layout_marginStart="8dp" />
android:tint="?attr/text_color_tab_active_white" />
<LinearLayout
android:id="@+id/toolbar_options_flow_bg"

View file

@ -20,8 +20,10 @@
android:orientation="horizontal"
android:minHeight="@dimen/list_item_height"
android:paddingLeft="@dimen/dialog_content_margin"
android:gravity="center_vertical"
android:paddingStart="@dimen/dialog_content_margin">
android:paddingStart="@dimen/dialog_content_margin"
android:paddingRight="0dp"
android:paddingEnd="0dp"
android:gravity="center_vertical">
<CheckBox
android:id="@+id/check_local_index"
@ -32,9 +34,11 @@
android:paddingTop="4dp"
android:paddingBottom="4dp"
android:paddingRight="@dimen/dialog_content_margin"
android:paddingEnd="@dimen/dialog_content_margin"
android:paddingLeft="0dp"
android:paddingStart="0dp"
android:clickable="false"
android:focusableInTouchMode="false"
android:paddingEnd="@dimen/dialog_content_margin" />
android:focusableInTouchMode="false" />
<ImageView
android:id="@+id/icon"
@ -51,23 +55,25 @@
android:layout_height="wrap_content"
android:paddingTop="@dimen/gpx_text_top_margin"
android:paddingBottom="@dimen/gpx_text_top_margin"
android:paddingRight="@dimen/showAllButtonMarginRight"
android:layout_marginRight="@dimen/showAllButtonMarginRight"
android:layout_marginEnd="@dimen/showAllButtonMarginRight"
android:layout_weight="1"
android:orientation="vertical"
android:paddingEnd="@dimen/showAllButtonMarginRight">
android:orientation="vertical">
<TextView
android:id="@+id/name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="start"
android:textColor="?android:textColorPrimary"
android:textSize="@dimen/default_list_text_size"
tools:text="@string/current_track"/>
<LinearLayout
android:id="@+id/read_section"
android:layout_width="match_parent"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="start"
android:orientation="horizontal"
android:visibility="visible"
android:gravity="center_vertical">
@ -77,8 +83,8 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginRight="@dimen/gpx_small_icon_margin"
android:src="@drawable/ic_small_distance"
android:layout_marginEnd="@dimen/gpx_small_icon_margin" />
android:layout_marginEnd="@dimen/gpx_small_icon_margin"
android:src="@drawable/ic_small_distance" />
<TextView
android:id="@+id/distance"
@ -95,8 +101,8 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginRight="@dimen/gpx_small_icon_margin"
android:src="@drawable/ic_small_point"
android:layout_marginEnd="@dimen/gpx_small_icon_margin" />
android:layout_marginEnd="@dimen/gpx_small_icon_margin"
android:src="@drawable/ic_small_point" />
<TextView
android:id="@+id/points_count"
@ -113,8 +119,8 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginRight="@dimen/gpx_small_icon_margin"
android:src="@drawable/ic_small_time"
android:layout_marginEnd="@dimen/gpx_small_icon_margin" />
android:layout_marginEnd="@dimen/gpx_small_icon_margin"
android:src="@drawable/ic_small_time" />
<TextView
android:id="@+id/time"
@ -159,10 +165,10 @@
android:layout_width="@dimen/list_item_height"
android:layout_height="@dimen/list_item_height"
android:layout_marginLeft="@dimen/favorites_icon_right_margin"
android:layout_marginStart="@dimen/favorites_icon_right_margin"
android:background="?attr/dashboard_button"
android:src="@drawable/ic_action_gsave_dark"
android:visibility="gone"
android:layout_marginStart="@dimen/favorites_icon_right_margin" />
android:visibility="gone" />
<ImageButton
android:id="@+id/stop"
@ -198,9 +204,9 @@
android:clickable="false"
android:focusable="false"
android:focusableInTouchMode="false"
android:paddingRight="@dimen/list_content_padding"
android:gravity="center_vertical"
android:paddingEnd="@dimen/list_content_padding" />
android:layout_marginRight="@dimen/list_content_padding"
android:layout_marginEnd="@dimen/list_content_padding"
android:gravity="center_vertical" />
<androidx.appcompat.widget.AppCompatCheckBox
android:id="@+id/toggle_checkbox_item"
@ -208,12 +214,12 @@
android:layout_height="wrap_content"
android:paddingTop="4dp"
android:paddingBottom="4dp"
android:paddingRight="@dimen/dialog_content_margin"
android:layout_marginRight="@dimen/dialog_content_margin"
android:layout_marginEnd="@dimen/dialog_content_margin"
android:clickable="false"
android:focusable="false"
android:focusableInTouchMode="false"
android:visibility="gone"
android:paddingEnd="@dimen/dialog_content_margin" />
android:visibility="gone" />
</LinearLayout>

View file

@ -13,43 +13,62 @@
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:layout_marginLeft="24dp"
android:layout_marginStart="24dp"
android:gravity="center"
android:visibility="gone"
tools:visibility="visible"
android:layout_marginStart="24dp" />
tools:visibility="visible" />
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/title"
<FrameLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginBottom="11dip"
android:layout_gravity="center_vertical"
android:layout_marginStart="@dimen/content_padding_small"
android:layout_marginLeft="@dimen/content_padding_small"
android:layout_marginTop="11dp"
android:layout_weight="1"
android:gravity="center_vertical"
android:text="@string/layer_poi"
android:textColor="?android:textColorPrimary"
android:textSize="@dimen/default_list_text_size"
android:layout_marginStart="@dimen/content_padding_small" />
android:layout_marginTop="@dimen/content_padding_small"
android:layout_marginBottom="@dimen/content_padding_small"
android:layout_weight="1">
<androidx.appcompat.widget.AppCompatImageView
android:id="@+id/icon_settings"
android:contentDescription="@string/shared_string_settings"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:focusable="false"
android:gravity="center_vertical"
android:visibility="gone"
tools:visibility="visible"/>
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical|start"
android:gravity="center_vertical|start"
android:layout_marginRight="52dp"
android:layout_marginEnd="52dp"
android:text="@string/layer_poi"
android:textColor="?android:textColorPrimary"
android:textSize="@dimen/default_list_text_size" />
<!-- android:button="@drawable/ic_btn_wocheckbox" -->
<androidx.appcompat.widget.AppCompatCheckBox
android:id="@+id/toggle_item"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_marginRight="24dp"
android:layout_marginEnd="24dp"
android:focusable="false"
app:buttonTint="?attr/active_color_basic" />
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical|end"
android:orientation="horizontal">
<androidx.appcompat.widget.AppCompatImageView
android:id="@+id/icon_settings"
android:contentDescription="@string/shared_string_settings"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:focusable="false"
android:gravity="center_vertical"
android:visibility="gone"
tools:visibility="visible"/>
<!-- android:button="@drawable/ic_btn_wocheckbox" -->
<androidx.appcompat.widget.AppCompatCheckBox
android:id="@+id/toggle_item"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_marginRight="24dp"
android:layout_marginEnd="24dp"
android:focusable="false"
android:layout_gravity="center"
app:buttonTint="?attr/active_color_basic" />
</LinearLayout>
</FrameLayout>
</LinearLayout>

View file

@ -1,34 +1,36 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="?attr/expandable_list_item_background"
android:descendantFocusability="blocksDescendants"
android:minHeight="@dimen/list_item_height"
android:orientation="horizontal"
android:paddingLeft="@dimen/list_content_padding"
android:paddingStart="@dimen/list_content_padding">
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingLeft="@dimen/list_content_padding"
android:paddingStart="@dimen/list_content_padding"
android:paddingRight="0dp"
android:paddingEnd="0dp"
android:background="?attr/expandable_list_item_background"
android:descendantFocusability="blocksDescendants"
android:minHeight="@dimen/list_item_height"
android:orientation="horizontal">
<CheckBox
android:id="@+id/check_local_index"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginRight="@dimen/local_index_check_right_margin"
android:layout_marginEnd="@dimen/local_index_check_right_margin"
android:layout_marginTop="@dimen/favorites_icon_top_margin"
android:layout_marginEnd="@dimen/local_index_check_right_margin"
android:layout_marginRight="@dimen/local_index_check_right_margin"
android:focusable="false"
android:visibility="gone"/>
android:visibility="gone" />
<ImageView
android:id="@+id/icon"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginRight="@dimen/favorites_icon_right_margin"
android:layout_marginEnd="@dimen/favorites_icon_right_margin"
android:layout_marginTop="@dimen/favorites_icon_top_margin"
android:layout_marginEnd="@dimen/favorites_icon_right_margin"
android:layout_marginRight="@dimen/favorites_icon_right_margin"
android:focusable="false"
android:src="@drawable/ic_gpx_track"/>
android:src="@drawable/ic_gpx_track" />
<LinearLayout
android:layout_width="0dp"
@ -43,7 +45,7 @@
android:layout_height="wrap_content"
android:textColor="?android:textColorPrimary"
android:textSize="@dimen/default_list_text_size"
tools:text="Bangladesh"/>
tools:text="Bangladesh" />
<LinearLayout
@ -55,11 +57,11 @@
android:id="@+id/descriptionTextView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginRight="7dp"
android:layout_marginEnd="7dp"
android:layout_marginRight="7dp"
android:textColor="?android:textColorSecondary"
android:textSize="@dimen/default_sub_text_size"
tools:text="12.34 Mb * 10/4/2015"/>
tools:text="12.34 Mb * 10/4/2015" />
</LinearLayout>
@ -67,11 +69,11 @@
<ImageButton
android:id="@+id/options"
android:contentDescription="@string/shared_string_more"
android:layout_width="@dimen/list_item_height"
android:layout_height="@dimen/list_item_height"
android:background="?attr/dashboard_button"
android:contentDescription="@string/shared_string_more"
android:focusable="false"
android:src="@drawable/ic_overflow_menu_white"/>
android:src="@drawable/ic_overflow_menu_white" />
</LinearLayout>

View file

@ -43,9 +43,9 @@
<net.osmand.plus.widgets.TextViewEx
android:id="@+id/title"
android:layout_width="match_parent"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center|start"
android:layout_gravity="center_vertical|start"
android:text="@string/configure_profile"
osmand:typeface="@string/font_roboto_medium"
android:textColor="?attr/active_color_basic"

View file

@ -48,8 +48,9 @@
<net.osmand.plus.widgets.TextViewEx
android:id="@+id/title"
android:layout_width="match_parent"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical|start"
android:ellipsize="end"
android:maxLines="2"
osmand:typeface="@string/font_roboto_medium"
@ -59,8 +60,9 @@
<net.osmand.plus.widgets.TextViewEx
android:id="@+id/description"
android:layout_width="match_parent"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical|start"
android:ellipsize="end"
android:maxLines="1"
osmand:typeface="@string/font_roboto_regular"

View file

@ -170,9 +170,9 @@
android:paddingBottom="3dp"
android:paddingLeft="@dimen/context_menu_padding_margin_default"
android:paddingRight="@dimen/context_menu_padding_margin_default"
android:paddingTop="3dp"
android:paddingStart="@dimen/context_menu_padding_margin_default"
android:paddingEnd="@dimen/context_menu_padding_margin_default">
android:paddingStart="@dimen/context_menu_padding_margin_default"
android:paddingEnd="@dimen/context_menu_padding_margin_default"
android:paddingTop="3dp">
<LinearLayout
android:id="@+id/additional_info_row"
@ -197,10 +197,10 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="top"
android:paddingRight="@dimen/context_menu_padding_margin_small"
android:layout_marginEnd="@dimen/context_menu_padding_margin_small"
android:layout_marginRight="@dimen/context_menu_padding_margin_small"
android:paddingTop="1dp"
tools:src="@drawable/ic_action_opening_hour_16"
android:paddingEnd="@dimen/context_menu_padding_margin_small" />
tools:src="@drawable/ic_action_opening_hour_16" />
<TextView
android:id="@+id/additional_info_text_view"
@ -263,10 +263,10 @@
android:paddingBottom="@dimen/context_menu_padding_margin_small"
android:paddingLeft="@dimen/content_padding_half"
android:paddingRight="@dimen/content_padding_half"
android:paddingStart="@dimen/content_padding_half"
android:paddingEnd="@dimen/content_padding_half"
android:visibility="gone"
tools:visibility="visible"
android:paddingStart="@dimen/content_padding_half"
android:paddingEnd="@dimen/content_padding_half">
tools:visibility="visible">
<include
android:id="@+id/title_button_view"
@ -293,10 +293,10 @@
android:paddingBottom="@dimen/context_menu_padding_margin_small"
android:paddingLeft="@dimen/content_padding_half"
android:paddingRight="@dimen/content_padding_half"
android:paddingStart="@dimen/content_padding_half"
android:paddingEnd="@dimen/content_padding_half"
android:visibility="gone"
tools:visibility="visible"
android:paddingStart="@dimen/content_padding_half"
android:paddingEnd="@dimen/content_padding_half">
tools:visibility="visible">
<include
android:id="@+id/download_button_left_view"
@ -323,10 +323,10 @@
android:paddingBottom="@dimen/context_menu_padding_margin_small"
android:paddingLeft="@dimen/content_padding_half"
android:paddingRight="@dimen/content_padding_half"
android:paddingStart="@dimen/content_padding_half"
android:paddingEnd="@dimen/content_padding_half"
android:visibility="gone"
tools:visibility="visible"
android:paddingStart="@dimen/content_padding_half"
android:paddingEnd="@dimen/content_padding_half">
tools:visibility="visible">
<include
android:id="@+id/title_button_bottom_view"
@ -368,9 +368,9 @@
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:layout_marginRight="@dimen/content_padding_small"
android:layout_marginEnd="@dimen/content_padding_small"
android:layout_weight="1"
android:orientation="vertical"
android:layout_marginEnd="@dimen/content_padding_small">
android:orientation="vertical">
<TextView
android:id="@+id/progressTitle"
@ -573,13 +573,13 @@
android:gravity="start|center_vertical"
android:paddingLeft="@dimen/context_menu_padding_margin_default"
android:paddingRight="@dimen/context_menu_padding_margin_default"
android:paddingStart="@dimen/context_menu_padding_margin_default"
android:paddingEnd="@dimen/context_menu_padding_margin_default"
android:text="@string/rendering_category_details"
android:textAllCaps="true"
android:textSize="@dimen/default_desc_text_size"
osmand:typeface="@string/font_roboto_medium"
tools:textColor="?attr/contextMenuButtonColor"
android:paddingStart="@dimen/context_menu_padding_margin_default"
android:paddingEnd="@dimen/context_menu_padding_margin_default" />
tools:textColor="?attr/contextMenuButtonColor" />
<net.osmand.plus.widgets.TextViewEx
android:id="@+id/context_menu_directions_button"
@ -590,13 +590,13 @@
android:gravity="end|center_vertical"
android:paddingLeft="@dimen/context_menu_padding_margin_default"
android:paddingRight="@dimen/context_menu_padding_margin_default"
android:paddingEnd="@dimen/context_menu_padding_margin_default"
android:paddingStart="@dimen/context_menu_padding_margin_default"
android:text="@string/get_directions"
android:textAllCaps="true"
android:textSize="@dimen/default_desc_text_size"
osmand:typeface="@string/font_roboto_medium"
tools:textColor="?attr/contextMenuButtonColor"
android:paddingEnd="@dimen/context_menu_padding_margin_default"
android:paddingStart="@dimen/context_menu_padding_margin_default" />
tools:textColor="?attr/contextMenuButtonColor" />
</LinearLayout>
@ -679,31 +679,37 @@
app:contentInsetLeft="4dp"
app:contentInsetStart="4dp">
<ImageView
android:id="@+id/context_menu_toolbar_back"
android:layout_width="@dimen/list_item_height"
android:layout_height="match_parent"
android:layout_gravity="start"
android:background="?attr/selectableItemBackgroundBorderless"
android:contentDescription="@string/shared_string_collapse"
android:scaleType="center"
android:src="@drawable/ic_arrow_back"
tools:visibility="visible"/>
<TextView
android:id="@+id/context_menu_toolbar_text"
android:layout_width="wrap_content"
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="start"
android:ellipsize="end"
android:lines="1"
android:maxLines="1"
android:scaleType="center"
android:singleLine="true"
android:textColor="@color/abc_primary_text_material_dark"
android:textSize="@dimen/abc_text_size_large_material"
tools:text="Toolbar"
tools:visibility="visible"/>
android:gravity="center_vertical|start"
android:orientation="horizontal">
<ImageView
android:id="@+id/context_menu_toolbar_back"
android:layout_width="@dimen/list_item_height"
android:layout_height="match_parent"
android:background="?attr/selectableItemBackgroundBorderless"
android:contentDescription="@string/shared_string_collapse"
android:scaleType="center"
android:src="@drawable/ic_arrow_back"
tools:visibility="visible"/>
<TextView
android:id="@+id/context_menu_toolbar_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:ellipsize="end"
android:lines="1"
android:maxLines="1"
android:scaleType="center"
android:singleLine="true"
android:textColor="@color/abc_primary_text_material_dark"
android:textSize="@dimen/abc_text_size_large_material"
tools:text="Toolbar"
tools:visibility="visible"/>
</LinearLayout>
</androidx.appcompat.widget.Toolbar>

View file

@ -51,7 +51,6 @@
android:paddingRight="@dimen/content_padding"
android:paddingTop="@dimen/content_padding_half"
android:paddingBottom="@dimen/content_padding_half"
android:singleLine="true"
android:textColor="?android:textColorPrimary"
android:textSize="@dimen/default_list_text_size"
osmand:typeface="@string/font_roboto_regular"

View file

@ -14,7 +14,7 @@
android:layout_marginTop="@dimen/list_header_top_margin"
android:layout_marginEnd="@dimen/list_content_padding"
android:layout_marginRight="@dimen/list_content_padding"
android:layout_marginBottom="8dp">
android:layout_marginBottom="@dimen/content_padding_half">
<ImageView
android:id="@+id/type_down_arrow"
@ -30,7 +30,7 @@
android:id="@+id/master_profile_otfb"
android:layout_width="match_parent"
android:layout_height="60dp"
app:labelText="@string/master_profile"
app:labelText="@string/profile_type_base_string"
app:primaryColor="@color/active_color_primary_dark"
app:secondaryColor="?android:textColorSecondary">

View file

@ -8,10 +8,10 @@
android:minHeight="48dp"
android:paddingRight="24dp"
android:paddingLeft="24dp"
android:background="?attr/selectableItemBackground"
android:orientation="horizontal"
android:paddingStart="24dp"
android:paddingEnd="24dp">
android:paddingEnd="24dp"
android:background="?attr/selectableItemBackground"
android:orientation="horizontal">
<ImageView

View file

@ -33,12 +33,12 @@
android:layout_height="wrap_content"
android:layout_weight="1"
android:layout_marginLeft="16dp"
android:layout_marginStart="16dp"
android:layout_gravity="center"
android:maxLines="1"
android:textColor="?android:textColorPrimary"
android:textSize="@dimen/default_list_text_size"
tools:text="Add marker"
android:layout_marginStart="16dp" />
tools:text="Add marker" />
<ImageView
android:id="@+id/delete"

View file

@ -17,7 +17,7 @@
android:id="@+id/info_type_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:layout_gravity="center_vertical|start"
android:ellipsize="end"
android:gravity="center"
android:letterSpacing="@dimen/text_button_letter_spacing"

View file

@ -16,14 +16,16 @@
android:layout_height="wrap_content"
android:minHeight="@dimen/list_item_height"
android:layout_gravity="center_vertical"
android:drawablePadding="16dp"
android:drawablePadding="@dimen/content_padding"
android:gravity="center_vertical"
android:paddingLeft="16dp"
android:paddingLeft="@dimen/content_padding"
android:paddingStart="@dimen/content_padding"
android:paddingRight="0dp"
android:paddingEnd="0dp"
android:textAppearance="@style/TextAppearance.ListItemTitle"
android:textStyle="normal"
tools:drawableLeft="@drawable/ic_action_search_dark"
tools:text="@string/layer_poi"
android:paddingStart="16dp"
tools:drawableStart="@drawable/ic_action_search_dark" />
</LinearLayout>

View file

@ -58,11 +58,11 @@
android:layout_weight="1"
android:ellipsize="end"
android:maxLines="2"
android:paddingRight="16dp"
android:layout_marginRight="@dimen/content_padding"
android:layout_marginEnd="@dimen/content_padding"
android:textColor="?android:textColorPrimary"
android:textSize="@dimen/default_list_text_size"
tools:text="Amsterdam"
android:paddingEnd="16dp" />
tools:text="Amsterdam" />
<LinearLayout
android:id="@+id/compass_layout"

View file

@ -10,8 +10,10 @@
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingLeft="24dp"
android:orientation="vertical"
android:paddingStart="24dp">
android:paddingStart="24dp"
android:paddingRight="0dp"
android:paddingEnd="0dp"
android:orientation="vertical">
<net.osmand.plus.widgets.TextViewEx
android:id="@+id/title"
@ -28,10 +30,10 @@
android:layout_width="match_parent"
android:layout_height="48dp"
android:gravity="center_vertical"
android:layout_marginTop="8dp"
android:layout_marginRight="8dp"
android:orientation="horizontal"
android:layout_marginEnd="8dp">
android:layout_marginTop="@dimen/content_padding_half"
android:layout_marginRight="@dimen/content_padding_half"
android:layout_marginEnd="@dimen/content_padding_half"
android:orientation="horizontal">
<androidx.appcompat.widget.AppCompatTextView
android:layout_width="0dp"
@ -45,13 +47,13 @@
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:gravity="center_vertical"
android:paddingLeft="16dp"
android:paddingRight="16dp"
android:paddingLeft="@dimen/content_padding"
android:paddingRight="@dimen/content_padding"
android:paddingStart="@dimen/content_padding"
android:paddingEnd="@dimen/content_padding"
android:clickable="true"
android:background="?attr/selectableItemBackground"
android:orientation="horizontal"
android:paddingStart="16dp"
android:paddingEnd="16dp">
android:orientation="horizontal">
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/widthTitle"
@ -59,9 +61,9 @@
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="end"
android:layout_marginRight="8dp"
android:textAppearance="@style/TextAppearance.ListItemTitle"
android:layout_marginEnd="8dp" />
android:layout_marginRight="@dimen/content_padding_half"
android:layout_marginEnd="@dimen/content_padding_half"
android:textAppearance="@style/TextAppearance.ListItemTitle" />
<androidx.appcompat.widget.AppCompatImageView
android:id="@+id/colorImage"

View file

@ -13,7 +13,9 @@
android:layout_height="wrap_content"
android:minHeight="@dimen/list_item_height"
android:paddingLeft="@dimen/list_content_padding"
android:paddingStart="@dimen/list_content_padding">
android:paddingStart="@dimen/list_content_padding"
android:paddingRight="0dp"
android:paddingEnd="0dp">
<ImageView
android:id="@+id/icon"

View file

@ -127,7 +127,7 @@
<string name="choose_auto_follow_route_descr">Zadejte interval pro automatický návrat mapy na vaši pozici.</string>
<string name="auto_follow_route_navigation">Automatické sledování pozice</string>
<string name="auto_follow_route_navigation_descr">Zapnout automatické sledování pozice pouze v režimu navigace.</string>
<string name="auto_follow_location_enabled">Automatické sledování pozice je zapnuto.</string>
<string name="auto_follow_location_enabled">Automatické centrování je zapnuto.</string>
<string name="pref_vector_rendering">Nastavení vektorového vykreslovače</string>
<string name="pref_overlay">Překryvná/podkresová vrstva</string>
<string name="pref_raster_map">Nastavení zdroje mapy</string>
@ -650,7 +650,7 @@
<string name="left_side_navigation_descr">Pro země, kde se jezdí po levé straně cesty.</string>
<string name="unknown_from_location">Startovní bod navigace není ještě zvolen</string>
<string name="confirm_interrupt_download">Přerušit stahování souboru\?</string>
<string name="basemap_was_selected_to_download">Základní mapa byla vybrána ke stažení, pro správnou funkci aplikace.</string>
<string name="basemap_was_selected_to_download">Základní mapa byla vybrána ke stažení. Je potřeba pro správnou funkci aplikace.</string>
<string name="map_online_plugin_is_not_installed">Pro výběr různých zdrojů map povolte modul \'Online mapy\'</string>
<string name="map_online_data">On-line mapy a dlaždice</string>
<string name="map_online_data_descr">Používat on-line mapy (ukládat dlaždice do mezipaměti na paměťové kartě).</string>
@ -1379,7 +1379,7 @@ Proporcionální paměť %4$s MB (limit Androidu %5$s MB, Dalvik %6$s MB).</stri
<string name="rendering_attr_roadStyle_name">Styl cesty</string>
<string name="rendering_value_default_name">Výchozí</string>
<string name="rendering_value_orange_name">Oranžová</string>
<string name="rendering_value_germanRoadAtlas_name">Německý Atlas cest</string>
<string name="rendering_value_germanRoadAtlas_name">Německý atlas cest</string>
<string name="traffic_warning_railways">Železniční přejezd</string>
<string name="traffic_warning_pedestrian">Přechod pro chodce</string>
<string name="show_railway_warnings">Železniční přejezdy</string>
@ -2274,7 +2274,7 @@ Zobrazená oblast: %1$s x %2$s</string>
<string name="analyze_on_map">Analyzovat na mapě</string>
<string name="shared_string_visible">Viditelné</string>
<string name="shared_string_paused">Pozastaveno</string>
<string name="route_is_too_long_v2">Pro velká vzdálenosti: Pokud do 10 minut nebude nalezena trasa, přidejte prosím na trasu mezicíle.</string>
<string name="route_is_too_long_v2">Pro velké vzdálenosti: Pokud do 10 minut nebude nalezena trasa, přidejte prosím na trasu mezicíle.</string>
<string name="save_poi_too_many_uppercase">Název obsahuje příliš mnoho velkých písmen. Pokračovat\?</string>
<string name="mapillary">Mapillary</string>
<string name="private_access_routing_req">Váš cíl se nachází v oblasti se soukromým přístupem. Povolit vstup na soukromé pozemky pro tuto cestu?</string>
@ -2939,10 +2939,10 @@ Zobrazená oblast: %1$s x %2$s</string>
<string name="use_osm_live_public_transport">Hromadná doprava z OsmAnd Live</string>
<string name="by_transport_type">Pomocí %1$s</string>
<string name="sit_on_the_stop">Nastupte na zastávce</string>
<string name="public_transport_warning_descr_blog">Dozvědět se na našem blogu více o tom, jak OsmAnd vypočítává trasy.</string>
<string name="public_transport_warning_descr_blog">Zjistěte více o výpočtu trasy v OsmAnd na našem blogu.</string>
<string name="public_transport_warning_title">Navigace pomocí veřejné dopravy je v současné době v beta testování, očekávejte chyby a nepřesnosti.</string>
<string name="add_intermediate">Přidat mezicíl</string>
<string name="avoid_pt_types_descr">Vyberte typy veřejné dopravy které se chcete vyhnout při navigaci:</string>
<string name="avoid_pt_types_descr">Vyberte typy veřejné dopravy, kterým se chcete při navigaci vyhnout:</string>
<string name="quick_action_day_night_mode">%s režim</string>
<string name="avoid_pt_types">Vyhněte se typům dopravy…</string>
<string name="shared_string_walk">Chůze</string>

View file

@ -1461,8 +1461,8 @@
<string name="poi_description_payment">Beskrivelse af betalingsmetoder</string>
<string name="poi_internet_access_yes">Internetadgang: Ja</string>
<string name="poi_internet_access_no">Internet access: nej</string>
<string name="poi_internet_access_fee_yes">Internetadgang - gebyr</string>
<string name="poi_internet_access_fee_no">Internetadgang - inget gebyr</string>
<string name="poi_internet_access_fee_yes">Internetadgang: gebyr</string>
<string name="poi_internet_access_fee_no">Internetadgang: inget gebyr</string>
<string name="poi_diet_vegetarian_only">Kun vegetarisk</string>
<string name="poi_diet_vegetarian_yes">Vegetar</string>
<string name="poi_diet_vegetarian_no">Vegetarkost: nej</string>
@ -3800,4 +3800,17 @@
<string name="poi_piste_ref">Piste-referencenummer</string>
<string name="poi_resort_hunting">Jagtbase</string>
<string name="poi_dive_centre">Scuba dykkercenter</string>
<string name="poi_sms">SMS</string>
<string name="poi_video_telephone">Video</string>
<string name="poi_sms_yes">Ja</string>
<string name="poi_sms_no">Nej</string>
<string name="poi_covered_booth">Stand</string>
<string name="poi_booth">Stand type</string>
<string name="poi_video_yes">Ja</string>
<string name="poi_video_no">Nej</string>
<string name="poi_internet_access_fee_customers">Signal for at finde stangen</string>
<string name="poi_traffic_signals_sound_locate">Kun når det er tilladt at gå</string>
<string name="poi_tactile_paving_contrasted">Kontrast</string>
<string name="poi_tactile_paving_primitive">Primitiv</string>
<string name="poi_tactile_paving_incorrect">Forkert</string>
</resources>

View file

@ -3378,7 +3378,7 @@
<string name="poi_frozen_food">Заморожені продукти</string>
<string name="poi_agrarian">Сільськогосподарський магазин</string>
<string name="poi_shop_fireplace">Крамниця груб</string>
<string name="poi_shop_boat">"Крамниця човнів "</string>
<string name="poi_shop_boat">Крамниця човнів</string>
<string name="poi_cannabis">Крамниця конопель</string>
<string name="poi_socket_cee_blue_yes">CEE блакитний</string>
<string name="poi_socket_cee_red_16a_yes">CEE червоний 16A</string>

View file

@ -804,7 +804,7 @@
<string name="osmand_srtm_short_description_80_chars">Втулок OsmAnd для відображення горизонталей в автономному режимі</string>
<string name="av_use_external_camera">Використовувати програму Камера</string>
<string name="av_settings_descr">Налаштування авдіо/відео запису.</string>
<string name="av_settings">"Налаштування авдіо/відео "</string>
<string name="av_settings">Налаштування аудіо/відео</string>
<string name="recording_error">Не вдалося виконати запис</string>
<string name="recording_camera_not_available">Камера недоступна</string>
<string name="recording_default_name">Запис</string>
@ -918,46 +918,47 @@
<string name="osmand_plus_play_title_30_chars">OsmAnd+ Мапи і Навігація</string>
<string name="layer_hillshade">Шар рельєфа місцевості</string>
<string name="download_regular_maps">Стандартна мапа</string>
<string name="osmand_long_description_1000_chars">OsmAnd (OSM Automated Navigation Directions)
\n
\nOsmAnd — навігаційне програмне забезпечення з відкритим кодом з доступом до різноманітних картографічних даних від OSM. Всі землеписні дані (векторні та растрові) можуть бути збережені на карті пам’яті телефону для подальшого автономного використання. Також пропонується функція маршрутизації в автономному режимі та в мережевому режимі, включаючи покрокові голосові підказки.
\n
\nКілька основних можливостей:
\n- повноцінна робота без інтернет-з’єднання (просто збережіть векторні чи растрові дані на пристрій)
\n- доступні компактні автономні векторні мапи всього світу
\n- завантаження мап країн чи областей безпосередньо в програмі
\n- можливе накладання декількох шарів мапи, такі як GPX- або навігаційні треки, POI, Закладки, горизонталі, зупинки громадського транспорту, додаткові мапи з налаштовуваною прозорістю
\n- автономний пошук адрес та POI
\n- автономне прокладання маршрутів середньої дальності
\n- режими для пішохідної, автомобільної та велонавігації з опціональними: - автоматичним перемиканням до денного/нічного режиму мапи
\n- самомасштабуванням мапи відповідно до швидкості руху
\n- можливістю орієнтації мапи за компасом чи напрямком руху
\n- веденням по смугах руху, відображенням обмежень швидкості, записаними та синтезованими голосами супроводу
\n
\nОбмеження цієї безкоштовної версії OsmAnd:
\n- кількість завантажень мап є обмеженою
\n- відсутній автономний доступ до POI з Вікіпедії
\n
\nOsmAnd активно розвивається, і наш проєкт та його подальший розвиток покладається на фінансові внески на розробку та тестування. Будь ласка, розгляньте можливість придбання OsmAnd+, профінансуйте конкретні нові можливості програми або зробіть благодійний внесок на https://osmand.net.</string>
<string name="osmand_plus_long_description_1000_chars">OsmAnd+ (OSM Automated Navigation Directions)
\n
\nOsmAnd+ — навігаційний застосунок з відкритим сирцевим кодом з доступом до широкого спектру всесвітніх даних OSM. Всі дані мапи (векторні або растрові мапи) можуть бути збережені на карті пам\'яті телефону для автономного використання. OsmAnd також пропонує можливість прокладання маршруту як автономно, так і з використанням мережевих служб з покроковим голосовим супроводом.
\n
\nOsmAnd+ — це платна версія застосунка. Купуючи його, ви підтримуєте проєкт, фінансуєте розробку нових функцій та отримуєте останні оновлення.
\n
\nКілька основних можливостей:
\n- Повністю автономна функціональність (просто збережіть векторні чи растрові мапи на пристрій)
\n- Доступні компактні автономні векторні мапи для усього світу
\n- Необмежена кількість завантажень мап окремої країни чи області безпосередньо у програмі
\n- Можливість автономної роботи із даними Вікіпедії (завантажте POI Вікіпедії) є чудовим інструментом для мандрівників
\n- Можливість накладання додаткових даних на мапу: наприклад, GPX- або навігаційні треки, POI, Закладки, горизонталі, зупинки громадського транспорту, додаткові мапи з налаштовуваною прозорістю
\n- Автономний пошук адрес та місць (POI)
\n- Автономне прокладання маршрутів для середніх відстаней
\n- Режими автомобіліста, велосипедиста або пішохода з опціями:
\n-- Самоперемикання денного/нічного режиму відображення
\n-- Масштабування мапи відповідно до швидкості руху
\n-- Орієнтація мапи за компасом чи напрямком руху
\n-- Ведення по смугах руху, відображення обмежень швидкості, записані чи синтезовані (TTS) голоси супроводу
<string name="osmand_long_description_1000_chars">OsmAnd (OSM Automated Navigation Directions)
\n
\n OsmAnd — навігаційне програмне забезпечення з відкритим кодом з доступом до різноманітних картографічних даних від OSM. Всі землеписні дані (векторні та растрові) можуть бути збережені на карті пам’яті телефону для подальшого автономного використання. Також пропонується функція маршрутизації в автономному режимі та в мережевому режимі, включаючи покрокові голосові підказки.
\n
\n Кілька основних можливостей:
\n - повноцінна робота без інтернет-з’єднання (просто збережіть векторні чи растрові дані на пристрій)
\n - доступні компактні автономні векторні мапи всього світу
\n - завантаження мап країн чи областей безпосередньо в програмі
\n - можливе накладання декількох шарів мапи, такі як GPX- або навігаційні треки, POI, Закладки, горизонталі, зупинки громадського транспорту, додаткові мапи з налаштовуваною прозорістю
\n - автономний пошук адрес та POI
\n - автономне прокладання маршрутів середньої дальності
\n - режими для пішохідної, автомобільної та велонавігації з опціональними: - автоматичним перемиканням до денного/нічного режиму мапи
\n - самостійним масштабуванням мапи відповідно до швидкості руху
\n - можливістю орієнтації мапи за компасом чи напрямком руху
\n - веденням по смугах руху, відображенням обмежень швидкості, записаними та синтезованими голосами супроводу
\n
\n Обмеження цієї безкоштовної версії OsmAnd:
\n - кількість завантажень мап є обмеженою
\n - відсутній автономний доступ до POI з Вікіпедії
\n
\n OsmAnd активно розвивається, і наш проєкт та його подальший розвиток покладається на фінансові внески на розробку та тестування. Будь ласка, розгляньте можливість придбання OsmAnd+, профінансуйте конкретні нові можливості програми або зробіть благодійний внесок на https://osmand.net.</string>
<string name="osmand_plus_long_description_1000_chars">OsmAnd+ (OSM Automated Navigation Directions)
\n
\n OsmAnd+ — навігаційний застосунок з відкритим сирцевим кодом з доступом до широкого спектра всесвітніх даних OSM. Всі дані мапи (векторні або растрові мапи) можуть бути збережені на карті пам\'яті телефону для автономного використання. OsmAnd також пропонує можливість прокладання маршруту як автономно, так і з використанням мережевих служб з покроковим голосовим супроводом.
\n
\n OsmAnd+ — це платна версія застосунку. Купуючи його, ви підтримуєте проєкт, фінансуєте розробку нових функцій та отримуєте останні оновлення.
\n
\n Кілька основних можливостей:
\n - Повністю автономна функціональність (просто збережіть векторні чи растрові мапи на пристрій)
\n - Доступні компактні автономні векторні мапи для усього світу
\n - Необмежена кількість завантажень мап окремої країни чи області безпосередньо у програмі
\n - Можливість автономної роботи із даними Вікіпедії (завантажте POI Вікіпедії) є чудовим інструментом для мандрівників
\n - Можливість накладання додаткових даних на мапу: наприклад, GPX- або навігаційні треки, POI, Закладки, горизонталі, зупинки громадського транспорту, додаткові мапи з налаштовуваною прозорістю
\n
\n - Автономний пошук адрес та місць (POI)
\n - Автономне прокладання маршрутів для середніх відстаней
\n - Режими автомобіліста, велосипедиста або пішохода з опціями:
\n - Самоперемикання денного/нічного режиму відображення
\n - Масштабування мапи відповідно до швидкості руху
\n - Орієнтація мапи за компасом чи напрямком руху
\n - Ведення по смугах руху, відображення обмежень швидкості, записані чи синтезовані (TTS) голоси супроводу
\n</string>
<string name="street_name">Назва вулиці</string>
<string name="hno">Номер будинку</string>
@ -3489,7 +3490,7 @@
<string name="clear_recorded_data">Очистити записані дані</string>
<string name="release_3_6">• Профілі: тепер ви можете змінити порядок, встановити значок для мапи, змінити всі налаштування основних профілів та відновити їх до усталених значень.
\n
\n • Додано номер виходу в навігацію
\n • Додано нумерацію з\'їздів за навігації
\n
\n • Перероблені налаштування втулків
\n
@ -3503,7 +3504,7 @@
\n
\n • Додано дані про захід / схід сонця для налаштування мапи
\n
\n • Доданотзначки будинку/роботи на мапі
\n • Додано значки будинку/роботи на мапі
\n
\n • Додана підтримка багаторядкового опису в Налаштуваннях
\n

View file

@ -4206,4 +4206,20 @@
<string name="poi_tactile_paving_primitive">Primitive</string>
<string name="poi_tactile_paving_incorrect">Incorrect</string>
<string name="poi_seamark_water_level_part_submerged">Water level: part-submerged</string>
<string name="poi_seamark_water_level_submerged">Water level: submerged</string>
<string name="poi_seamark_water_level_dry">Water level: dry</string>
<string name="poi_seamark_water_level_covers">Water level: covers</string>
<string name="poi_seamark_water_level_awash">Water level: awash</string>
<string name="poi_seamark_water_level_floods">Water level: floods</string>
<string name="poi_seamark_water_level_floating">Water level: floating</string>
<string name="poi_seamark_water_level_above_mwl">Water level: above mean water level</string>
<string name="poi_seamark_water_level_below_mwl">Water level: below mean water level</string>
<string name="poi_seamark_obstruction">Obstruction</string>
<string name="poi_drinking_water_refill_yes">Drinking water refill: yes</string>
<string name="poi_drinking_water_refill_no">Drinking water refill: no</string>
<string name="poi_drinking_water_refill_network">Drinking water refill network</string>
</resources>

View file

@ -11,6 +11,7 @@
Thx - Hardy
-->
<string name="clear_recorded_data_warning">Are you sure you want to clear recorded data?</string>
<string name="restore_all_profile_settings_descr">All profile settings will be restored to their original state after creating/importing this profile.</string>
<string name="restore_all_profile_settings">Restore all profile settings?</string>
<string name="saving_new_profile">Saving new profile</string>

View file

@ -102,6 +102,7 @@
<!-- Osmand themes styles -->
<style name="OsmandLightTheme" parent="Theme.AppCompat.Light">
<item name="android:textDirection">locale</item>
<item name="android:statusBarColor">@color/status_bar_color_light</item>
<item name="mapBackground">@color/map_background_color_light</item>
<item name="chart_marker_background">@drawable/chart_marker_background_light</item>
@ -378,6 +379,7 @@
</style>
<style name="OsmandDarkTheme" parent="Theme.AppCompat">
<item name="android:textDirection">locale</item>
<item name="android:statusBarColor">@color/status_bar_color_dark</item>
<item name="mapBackground">@color/map_background_color_dark</item>
<item name="chart_marker_background">@drawable/chart_marker_background_dark</item>

View file

@ -39,6 +39,7 @@ import android.util.DisplayMetrics;
import android.util.TypedValue;
import android.view.Gravity;
import android.view.View;
import android.view.ViewGroup;
import android.view.ViewParent;
import android.view.ViewTreeObserver;
import android.view.inputmethod.InputMethodManager;
@ -61,6 +62,7 @@ import net.osmand.util.Algorithms;
import java.io.File;
import java.text.MessageFormat;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.Date;
@ -651,12 +653,54 @@ public class AndroidUtils {
return baseString;
}
}
public static void setCompoundDrawablesWithIntrinsicBounds(@NonNull TextView tv, Drawable start, Drawable top, Drawable end, Drawable bottom){
if (isSupportRTL()) {
tv.setCompoundDrawablesRelativeWithIntrinsicBounds(start, top, end, bottom);
} else {
tv.setCompoundDrawablesWithIntrinsicBounds(start, top, end, bottom);
}
}
public static void setPadding(View view, int start, int top, int end, int bottom) {
if (isSupportRTL()) {
view.setPaddingRelative(start, top, end, bottom);
} else {
view.setPadding(start, top, end, bottom);
}
}
public static void setMargins(ViewGroup.MarginLayoutParams layoutParams, int start, int top, int end, int bottom) {
layoutParams.setMargins(start, top, end, bottom);
if (isSupportRTL()) {
layoutParams.setMarginStart(start);
layoutParams.setMarginEnd(end);
}
}
public static int getLayoutDirection(@NonNull Context ctx) {
Locale currentLocale = ctx.getResources().getConfiguration().locale;
return TextUtilsCompat.getLayoutDirectionFromLocale(currentLocale);
}
public static int getNavigationIconResId(@NonNull Context ctx) {
return getLayoutDirection(ctx) == ViewCompat.LAYOUT_DIRECTION_RTL ?
R.drawable.ic_arrow_forward : R.drawable.ic_arrow_back;
}
public static boolean isSupportRTL() {
return Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1;
}
public static ArrayList<View> getChildrenViews(ViewGroup vg) {
ArrayList<View> result = new ArrayList<>();
for (int i = 0; i < vg.getChildCount(); i++) {
View child = vg.getChildAt(i);
result.add(child);
}
return result;
}
public static float getFreeSpaceGb(File dir) {
if (dir.canRead()) {
StatFs fs = new StatFs(dir.getAbsolutePath());

View file

@ -203,7 +203,6 @@ public class ContextMenuAdapter {
convertView = View.inflate(new ContextThemeWrapper(getContext(), themeRes), layoutId, null);
convertView.setTag(layoutId);
}
UiUtilities.setupLayoutDirection(convertView);
if (item.getMinHeight() > 0) {
convertView.setMinimumHeight(item.getMinHeight());
}
@ -214,7 +213,7 @@ public class ContextMenuAdapter {
TextView title = convertView.findViewById(R.id.title);
title.setText(item.getTitle());
if (layoutId == R.layout.main_menu_drawer_btn_switch_profile) {
ImageView icon = convertView.findViewById(R.id.icon);
icon.setImageDrawable(mIconsCache.getIcon(item.getIcon(), colorResId));
@ -341,7 +340,6 @@ public class ContextMenuAdapter {
drawable.setBounds(0, 0, drawableSizeInPixels, drawableSizeInPixels);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
tv.setCompoundDrawablesRelative(drawable, null, null, null);
UiUtilities.setupLayoutDirection(tv);
} else {
tv.setCompoundDrawables(drawable, null, null, null);
}

View file

@ -80,7 +80,6 @@ public class DialogListItemAdapter extends BaseAdapter {
}
View button = view.findViewById(R.id.button);
button.setTag(position);
UiUtilities.setupLayoutDirection(button);
final CompoundButton cb;
if (multiChoice) {
cb = view.findViewById(R.id.checkbox);

View file

@ -383,14 +383,9 @@ public class UiUtilities {
if (image == null) {
return;
}
int rotation = layoutDirection == View.LAYOUT_DIRECTION_LTR ? 0 : 180;
int rotation = layoutDirection == ViewCompat.LAYOUT_DIRECTION_RTL ? 180 : 0;
image.setRotationY(rotation);
}
public static void setupLayoutDirection(View layout) {
int direction = AndroidUtils.getLayoutDirection(layout.getContext());
ViewCompat.setLayoutDirection(layout, direction);
}
public static void setupCompoundButtonDrawable(Context ctx, boolean nightMode, @ColorInt int activeColor, Drawable drawable) {
int inactiveColor = ContextCompat.getColor(ctx, nightMode ? R.color.icon_color_default_dark : R.color.icon_color_default_light);

View file

@ -1,6 +1,7 @@
package net.osmand.plus.activities;
import android.app.Activity;
import android.graphics.drawable.Drawable;
import android.os.Build.VERSION;
import android.os.Build.VERSION_CODES;
import android.os.Bundle;
@ -15,6 +16,7 @@ import android.widget.TextView;
import androidx.appcompat.widget.Toolbar;
import androidx.core.view.ViewCompat;
import net.osmand.AndroidUtils;
import net.osmand.plus.OsmandApplication;
import net.osmand.plus.OsmandSettings;
import net.osmand.plus.R;
@ -50,7 +52,9 @@ public abstract class ActionBarPreferenceActivity extends AppCompatPreferenceAct
}
tb.setClickable(true);
int activeButtonsAndLinksTextColorResId = lightTheme ? R.color.active_buttons_and_links_text_light : R.color.active_buttons_and_links_text_dark;
tb.setNavigationIcon(((OsmandApplication) getApplication()).getUIUtilities().getIcon(R.drawable.ic_arrow_back, activeButtonsAndLinksTextColorResId));
int navigationIconResId = AndroidUtils.getNavigationIconResId(getApplication());
Drawable icBack = ((OsmandApplication) getApplication()).getUIUtilities().getIcon(navigationIconResId, activeButtonsAndLinksTextColorResId);
tb.setNavigationIcon(icBack);
tb.setNavigationContentDescription(R.string.access_shared_string_navigate_up);
tb.setBackgroundColor(getResources().getColor(getResIdFromAttribute(this, R.attr.pstsTabBackground)));
tb.setTitleTextColor(getResources().getColor(getResIdFromAttribute(this, R.attr.pstsTextColor)));

View file

@ -106,7 +106,8 @@ public class FavoritesSearchFragment extends DialogFragment {
}
toolbar = (Toolbar) view.findViewById(R.id.toolbar);
toolbar.setNavigationIcon(app.getUIUtilities().getThemedIcon(R.drawable.ic_arrow_back));
Drawable icBack = app.getUIUtilities().getThemedIcon(AndroidUtils.getNavigationIconResId(activity));
toolbar.setNavigationIcon(icBack);
toolbar.setNavigationContentDescription(R.string.access_shared_string_navigate_up);
toolbar.setNavigationOnClickListener(
new View.OnClickListener() {

View file

@ -174,8 +174,8 @@ public class FavoritesTreeFragment extends OsmandExpandableListFragment implemen
View searchView = inflater.inflate(R.layout.search_fav_list_item, null);
searchView.setBackgroundResource(light ? R.color.list_background_color_light : R.color.list_background_color_dark);
TextView title = (TextView) searchView.findViewById(R.id.title);
title.setCompoundDrawablesWithIntrinsicBounds(getMyApplication().getUIUtilities().getThemedIcon(R.drawable.ic_action_search_dark), null, null, null);
title.setHint(R.string.shared_string_search);
Drawable searchIcon = getMyApplication().getUIUtilities().getThemedIcon(R.drawable.ic_action_search_dark);
AndroidUtils.setCompoundDrawablesWithIntrinsicBounds(title, searchIcon, null, null, null);
searchView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {

View file

@ -5,6 +5,7 @@ import android.graphics.drawable.Drawable;
import android.view.View;
import android.view.ViewGroup;
import net.osmand.AndroidUtils;
import androidx.appcompat.app.ActionBar;
import net.osmand.plus.OsmandApplication;
@ -18,7 +19,7 @@ public class OsmandActionBarActivity extends OsmandInAppPurchaseActivity {
//should be called after set content view
protected void setupHomeButton() {
boolean lightTheme = getMyApplication().getSettings().isLightContent();
Drawable back = ((OsmandApplication)getApplication()).getUIUtilities().getIcon(R.drawable.ic_arrow_back,
Drawable back = ((OsmandApplication)getApplication()).getUIUtilities().getIcon(AndroidUtils.getNavigationIconResId(getApplication()),
lightTheme ? R.color.active_buttons_and_links_text_light : R.color.active_buttons_and_links_text_dark);
final ActionBar supportActionBar = getSupportActionBar();
if (supportActionBar != null) {

View file

@ -1,6 +1,7 @@
package net.osmand.plus.activities;
import android.app.Activity;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.util.TypedValue;
import android.view.MenuItem;
@ -10,6 +11,7 @@ import android.widget.CompoundButton;
import androidx.appcompat.widget.SwitchCompat;
import androidx.appcompat.widget.Toolbar;
import net.osmand.AndroidUtils;
import net.osmand.plus.OsmandApplication;
import net.osmand.plus.R;
@ -26,7 +28,8 @@ public class PrivacyAndSecurityActivity extends OsmandActionBarActivity {
tb.setTitle(R.string.settings_privacy_and_security);
tb.setClickable(true);
tb.setNavigationIcon(((OsmandApplication) getApplication()).getUIUtilities().getIcon(R.drawable.ic_arrow_back));
Drawable icBack = ((OsmandApplication) getApplication()).getUIUtilities().getIcon(AndroidUtils.getNavigationIconResId(app));
tb.setNavigationIcon(icBack);
tb.setNavigationContentDescription(R.string.access_shared_string_navigate_up);
tb.setBackgroundColor(getResources().getColor(resolveResourceId(this, R.attr.pstsTabBackground)));
tb.setTitleTextColor(getResources().getColor(resolveResourceId(this, R.attr.pstsTextColor)));

View file

@ -341,8 +341,8 @@ public class DashboardOnMap implements ObservableScrollViewCallbacks, IRouteInfo
ImageView lst = (ImageView) dashboardView.findViewById(R.id.toolbar_list);
lst.setVisibility(View.GONE);
ImageView back = (ImageView) dashboardView.findViewById(R.id.toolbar_back);
back.setImageDrawable(
getMyApplication().getUIUtilities().getIcon(R.drawable.ic_arrow_back));
Drawable icBack = getMyApplication().getUIUtilities().getIcon(AndroidUtils.getNavigationIconResId(mapActivity));
back.setImageDrawable(icBack);
back.setOnClickListener(new View.OnClickListener() {
@Override

View file

@ -4,6 +4,7 @@ import android.graphics.drawable.Drawable;
import android.view.View;
import android.widget.TextView;
import net.osmand.AndroidUtils;
import net.osmand.plus.UiUtilities;
import net.osmand.plus.R;
import net.osmand.plus.download.DownloadActivity;
@ -26,20 +27,20 @@ public class DownloadGroupViewHolder {
}
private Drawable getIconForGroup(DownloadResourceGroup group) {
Drawable iconLeft;
Drawable iconStart;
if (group.getType() == DownloadResourceGroup.DownloadResourceGroupType.VOICE_REC
|| group.getType() == DownloadResourceGroup.DownloadResourceGroupType.VOICE_TTS) {
iconLeft = ctx.getMyApplication().getUIUtilities().getThemedIcon(R.drawable.ic_action_volume_up);
iconStart = ctx.getMyApplication().getUIUtilities().getThemedIcon(R.drawable.ic_action_volume_up);
} else if (group.getType() == DownloadResourceGroup.DownloadResourceGroupType.FONTS) {
iconLeft = ctx.getMyApplication().getUIUtilities().getThemedIcon(R.drawable.ic_action_map_language);
iconStart = ctx.getMyApplication().getUIUtilities().getThemedIcon(R.drawable.ic_action_map_language);
} else {
UiUtilities cache = ctx.getMyApplication().getUIUtilities();
if (isParentWorld(group) || isParentWorld(group.getParentGroup())) {
iconLeft = cache.getThemedIcon(R.drawable.ic_world_globe_dark);
iconStart = cache.getThemedIcon(R.drawable.ic_world_globe_dark);
} else {
DownloadResourceGroup ggr = group
.getSubGroupById(DownloadResourceGroup.DownloadResourceGroupType.REGION_MAPS.getDefaultId());
iconLeft = cache.getThemedIcon(R.drawable.ic_map);
iconStart = cache.getThemedIcon(R.drawable.ic_map);
if (ggr != null && ggr.getIndividualResources() != null) {
IndexItem item = null;
for (IndexItem ii : ggr.getIndividualResources()) {
@ -53,21 +54,21 @@ public class DownloadGroupViewHolder {
}
if (item != null) {
if (item.isOutdated()) {
iconLeft = cache.getIcon(R.drawable.ic_map, R.color.color_distance);
iconStart = cache.getIcon(R.drawable.ic_map, R.color.color_distance);
} else {
iconLeft = cache.getIcon(R.drawable.ic_map, R.color.color_ok);
iconStart = cache.getIcon(R.drawable.ic_map, R.color.color_ok);
}
}
}
}
}
return iconLeft;
return iconStart;
}
public void bindItem(DownloadResourceGroup group) {
Drawable iconLeft = getIconForGroup(group);
textView.setCompoundDrawablesWithIntrinsicBounds(iconLeft, null, null, null);
String name = group.getName(ctx);
textView.setText(name);
Drawable iconStart = getIconForGroup(group);
AndroidUtils.setCompoundDrawablesWithIntrinsicBounds(textView, iconStart, null, null, null);
}
}

View file

@ -105,7 +105,8 @@ public class DownloadResourceGroupFragment extends DialogFragment implements Dow
activity.getAccessibilityAssistant().registerPage(view, DownloadActivity.DOWNLOAD_TAB_NUMBER);
toolbar = (Toolbar) view.findViewById(R.id.toolbar);
toolbar.setNavigationIcon(getMyApplication().getUIUtilities().getIcon(R.drawable.ic_arrow_back));
Drawable icBack = getMyApplication().getUIUtilities().getIcon(AndroidUtils.getNavigationIconResId(activity));
toolbar.setNavigationIcon(icBack);
toolbar.setNavigationContentDescription(R.string.access_shared_string_navigate_up);
toolbar.setNavigationOnClickListener(new View.OnClickListener() {
@Override
@ -534,20 +535,20 @@ public class DownloadResourceGroupFragment extends DialogFragment implements Dow
}
private Drawable getIconForGroup(DownloadResourceGroup group) {
Drawable iconLeft;
Drawable iconStart;
if (group.getType() == DownloadResourceGroupType.VOICE_REC
|| group.getType() == DownloadResourceGroupType.VOICE_TTS) {
iconLeft = ctx.getMyApplication().getUIUtilities().getThemedIcon(R.drawable.ic_action_volume_up);
iconStart = ctx.getMyApplication().getUIUtilities().getThemedIcon(R.drawable.ic_action_volume_up);
} else if (group.getType() == DownloadResourceGroupType.FONTS) {
iconLeft = ctx.getMyApplication().getUIUtilities().getThemedIcon(R.drawable.ic_action_map_language);
iconStart = ctx.getMyApplication().getUIUtilities().getThemedIcon(R.drawable.ic_action_map_language);
} else {
UiUtilities cache = ctx.getMyApplication().getUIUtilities();
if (isParentWorld(group) || isParentWorld(group.getParentGroup())) {
iconLeft = cache.getThemedIcon(R.drawable.ic_world_globe_dark);
iconStart = cache.getThemedIcon(R.drawable.ic_world_globe_dark);
} else {
DownloadResourceGroup ggr = group
.getSubGroupById(DownloadResourceGroupType.REGION_MAPS.getDefaultId());
iconLeft = cache.getThemedIcon(R.drawable.ic_map);
iconStart = cache.getThemedIcon(R.drawable.ic_map);
if (ggr != null && ggr.getIndividualResources() != null) {
IndexItem item = null;
for (IndexItem ii : ggr.getIndividualResources()) {
@ -561,22 +562,22 @@ public class DownloadResourceGroupFragment extends DialogFragment implements Dow
}
if (item != null) {
if (item.isOutdated()) {
iconLeft = cache.getIcon(R.drawable.ic_map, R.color.color_distance);
iconStart = cache.getIcon(R.drawable.ic_map, R.color.color_distance);
} else {
iconLeft = cache.getIcon(R.drawable.ic_map, R.color.color_ok);
iconStart = cache.getIcon(R.drawable.ic_map, R.color.color_ok);
}
}
}
}
}
return iconLeft;
return iconStart;
}
public void bindItem(DownloadResourceGroup group) {
Drawable iconLeft = getIconForGroup(group);
textView.setCompoundDrawablesWithIntrinsicBounds(iconLeft, null, null, null);
String name = group.getName(ctx);
textView.setText(name);
Drawable iconStart = getIconForGroup(group);
AndroidUtils.setCompoundDrawablesWithIntrinsicBounds(textView, iconStart, null, null, null);
}
}

View file

@ -28,6 +28,7 @@ import androidx.core.content.ContextCompat;
import androidx.fragment.app.DialogFragment;
import androidx.fragment.app.FragmentActivity;
import net.osmand.AndroidUtils;
import net.osmand.Collator;
import net.osmand.CollatorStringMatcher;
import net.osmand.OsmAndCollator;
@ -113,7 +114,8 @@ public class SearchDialogFragment extends DialogFragment implements DownloadEven
int iconColorResId = isLightContent ? R.color.active_buttons_and_links_text_light : R.color.active_buttons_and_links_text_dark;
Toolbar toolbar = (Toolbar) view.findViewById(R.id.toolbar);
Drawable icBack = getMyApplication().getUIUtilities().getIcon(R.drawable.ic_arrow_back, iconColorResId);
Drawable icBack = getMyApplication().getUIUtilities().getIcon(
AndroidUtils.getNavigationIconResId(getContext()), iconColorResId);
toolbar.setNavigationIcon(icBack);
toolbar.setNavigationContentDescription(R.string.access_shared_string_navigate_up);
toolbar.setNavigationOnClickListener(new View.OnClickListener() {

View file

@ -620,7 +620,7 @@ public class GpxUiHelper {
popup.setAnchorView(apprTitleView);
popup.setContentWidth(AndroidUtils.dpToPx(activity, 200f));
popup.setModal(true);
popup.setDropDownGravity(Gravity.RIGHT | Gravity.TOP);
popup.setDropDownGravity(Gravity.END | Gravity.TOP);
popup.setVerticalOffset(AndroidUtils.dpToPx(activity, -48f));
popup.setHorizontalOffset(AndroidUtils.dpToPx(activity, -6f));
final GpxAppearanceAdapter gpxApprAdapter = new GpxAppearanceAdapter(new ContextThemeWrapper(activity, themeRes),

View file

@ -103,7 +103,7 @@ public class MapContextMenuFragment extends BaseOsmAndFragment implements Downlo
private View toolbarContainer;
private View toolbarView;
private View toolbarBackButton;
private ImageView toolbarBackButton;
private TextView toolbarTextView;
private View topButtonContainer;
private LockableScrollView menuScrollView;
@ -208,14 +208,17 @@ public class MapContextMenuFragment extends BaseOsmAndFragment implements Downlo
openMenuHeaderOnly();
}
});
toolbarBackButton.setImageResource(AndroidUtils.getNavigationIconResId(mapActivity));
topButtonContainer = view.findViewById(R.id.context_menu_top_button_container);
view.findViewById(R.id.context_menu_top_back).setOnClickListener(new View.OnClickListener() {
ImageView backButton = (ImageView) view.findViewById(R.id.context_menu_top_back);
backButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
openMenuHeaderOnly();
}
});
backButton.setImageResource(AndroidUtils.getNavigationIconResId(mapActivity));
updateVisibility(topButtonContainer, 0);
map = mapActivity.getMapView();
@ -628,8 +631,9 @@ public class MapContextMenuFragment extends BaseOsmAndFragment implements Downlo
}
Drawable drawable = getIcon(iconResId, bottomButtonsColor);
directionsButton.setTextColor(ContextCompat.getColor(mapActivity, bottomButtonsColor));
directionsButton.setCompoundDrawablesWithIntrinsicBounds(null, null, drawable, null);
directionsButton.setCompoundDrawablePadding(dpToPx(8));
AndroidUtils.setCompoundDrawablesWithIntrinsicBounds(directionsButton, null, null, drawable, null);
int contentPaddingHalf = (int) getResources().getDimension(R.dimen.content_padding_half);
directionsButton.setCompoundDrawablePadding(contentPaddingHalf);
directionsButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {

View file

@ -562,7 +562,7 @@ public class MenuBuilder {
ImageView iconView = new ImageView(view.getContext());
LinearLayout.LayoutParams llIconParams = new LinearLayout.LayoutParams(dpToPx(24f), dpToPx(24f));
llIconParams.setMargins(dpToPx(16f), dpToPx(12f), dpToPx(24f), dpToPx(12f));
AndroidUtils.setMargins(llIconParams, dpToPx(16f), dpToPx(12f), dpToPx(24f), dpToPx(12f));
llIconParams.gravity = Gravity.CENTER_VERTICAL;
iconView.setLayoutParams(llIconParams);
iconView.setScaleType(ImageView.ScaleType.CENTER_INSIDE);
@ -575,7 +575,7 @@ public class MenuBuilder {
llText.setOrientation(LinearLayout.VERTICAL);
LinearLayout.LayoutParams llTextViewParams = new LinearLayout.LayoutParams(0, ViewGroup.LayoutParams.WRAP_CONTENT);
llTextViewParams.weight = 1f;
llTextViewParams.setMargins(0, 0, dpToPx(10f), 0);
AndroidUtils.setMargins(llTextViewParams, 0, 0, dpToPx(10f), 0);
llTextViewParams.gravity = Gravity.CENTER_VERTICAL;
llText.setLayoutParams(llTextViewParams);
ll.addView(llText);
@ -584,7 +584,7 @@ public class MenuBuilder {
if (!Algorithms.isEmpty(textPrefix)) {
textPrefixView = new TextViewEx(view.getContext());
LinearLayout.LayoutParams llTextParams = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
llTextParams.setMargins(icon == null ? dpToPx(16f) : 0, dpToPx(8f), 0, 0);
AndroidUtils.setMargins(llTextParams, icon == null ? dpToPx(16f) : 0, dpToPx(8f), 0, 0);
textPrefixView.setLayoutParams(llTextParams);
textPrefixView.setTypeface(FontCache.getRobotoRegular(view.getContext()));
textPrefixView.setTextSize(12);
@ -598,7 +598,8 @@ public class MenuBuilder {
// Primary text
TextViewEx textView = new TextViewEx(view.getContext());
LinearLayout.LayoutParams llTextParams = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
llTextParams.setMargins(icon != null ? 0 : dpToPx(16f), dpToPx(textPrefixView != null ? 2f : (secondaryText != null ? 10f : 8f)), 0, dpToPx(secondaryText != null ? 6f : 8f));
AndroidUtils.setMargins(llTextParams,
icon != null ? 0 : dpToPx(16f), dpToPx(textPrefixView != null ? 2f : (secondaryText != null ? 10f : 8f)), 0, dpToPx(secondaryText != null ? 6f : 8f));
textView.setLayoutParams(llTextParams);
textView.setTypeface(FontCache.getRobotoRegular(view.getContext()));
textView.setTextSize(16);
@ -629,7 +630,7 @@ public class MenuBuilder {
if (!TextUtils.isEmpty(secondaryText)) {
TextViewEx textViewSecondary = new TextViewEx(view.getContext());
LinearLayout.LayoutParams llTextSecondaryParams = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
llTextSecondaryParams.setMargins(icon != null ? 0 : dpToPx(16f), 0, 0, dpToPx(6f));
AndroidUtils.setMargins(llTextSecondaryParams, icon != null ? 0 : dpToPx(16f), 0, 0, dpToPx(6f));
textViewSecondary.setLayoutParams(llTextSecondaryParams);
textViewSecondary.setTypeface(FontCache.getRobotoRegular(view.getContext()));
textViewSecondary.setTextSize(14);
@ -643,7 +644,7 @@ public class MenuBuilder {
TextViewEx buttonTextView = new TextViewEx(view.getContext());
LinearLayout.LayoutParams buttonTextViewParams = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
buttonTextViewParams.gravity = Gravity.CENTER_VERTICAL;
buttonTextViewParams.setMargins(dpToPx(8), 0, dpToPx(8), 0);
AndroidUtils.setMargins(buttonTextViewParams, dpToPx(8), 0, dpToPx(8), 0);
buttonTextView.setLayoutParams(buttonTextViewParams);
buttonTextView.setTypeface(FontCache.getRobotoMedium(view.getContext()));
buttonTextView.setAllCaps(true);
@ -662,7 +663,7 @@ public class MenuBuilder {
ll.addView(llIconCollapse);
LinearLayout.LayoutParams llIconCollapseParams = new LinearLayout.LayoutParams(dpToPx(24f), dpToPx(24f));
llIconCollapseParams.setMargins(0, dpToPx(12f), dpToPx(24f), dpToPx(12f));
AndroidUtils.setMargins(llIconCollapseParams, 0, dpToPx(12f), dpToPx(24f), dpToPx(12f));
llIconCollapseParams.gravity = Gravity.CENTER_VERTICAL;
iconViewCollapse.setLayoutParams(llIconCollapseParams);
iconViewCollapse.setScaleType(ImageView.ScaleType.CENTER_INSIDE);
@ -827,7 +828,7 @@ public class MenuBuilder {
Button buttonView = new Button(view.getContext());
LinearLayout.LayoutParams llBtnParams = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
buttonView.setLayoutParams(llBtnParams);
buttonView.setPadding(dpToPx(10f), 0, dpToPx(10f), 0);
AndroidUtils.setPadding(buttonView, dpToPx(10f), 0, dpToPx(10f), 0);
buttonView.setGravity(Gravity.START | Gravity.CENTER_VERTICAL);
//buttonView.setTextSize(view.getResources().getDimension(resolveAttribute(view.getContext(), R.dimen.default_desc_text_size)));
buttonView.setTextColor(view.getResources().getColor(AndroidUtils.resolveAttribute(view.getContext(), R.attr.contextMenuButtonColor)));
@ -851,7 +852,7 @@ public class MenuBuilder {
LinearLayout.LayoutParams llHorLineParams = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, dpToPx(1f));
llHorLineParams.gravity = Gravity.BOTTOM;
if (!matchWidthDivider) {
llHorLineParams.setMargins(dpToPx(64f), 0, 0, 0);
AndroidUtils.setMargins(llHorLineParams, dpToPx(64f), 0, 0, 0);
}
horizontalLine.setLayoutParams(llHorLineParams);
horizontalLine.setBackgroundColor(app.getResources().getColor(light ? R.color.ctx_menu_bottom_view_divider_light : R.color.ctx_menu_bottom_view_divider_dark));
@ -915,12 +916,12 @@ public class MenuBuilder {
baseView.setOrientation(LinearLayout.HORIZONTAL);
LinearLayout.LayoutParams llBaseViewParams = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT);
baseView.setLayoutParams(llBaseViewParams);
baseView.setPadding(dpToPx(16), 0, dpToPx(16), dpToPx(12));
AndroidUtils.setPadding(baseView, dpToPx(16), 0, dpToPx(16), dpToPx(12));
baseView.setBackgroundResource(AndroidUtils.resolveAttribute(view.getContext(), android.R.attr.selectableItemBackground));
TextViewEx transportRect = new TextViewEx(view.getContext());
LinearLayout.LayoutParams trParams = new LinearLayout.LayoutParams(dpToPx(32), dpToPx(18));
trParams.setMargins(0, dpToPx(16), 0, 0);
AndroidUtils.setMargins(trParams, 0, dpToPx(16), 0, 0);
transportRect.setLayoutParams(trParams);
transportRect.setGravity(Gravity.CENTER);
transportRect.setAllCaps(true);
@ -943,7 +944,7 @@ public class MenuBuilder {
LinearLayout infoView = new LinearLayout(view.getContext());
infoView.setOrientation(LinearLayout.VERTICAL);
LinearLayout.LayoutParams infoViewLayoutParams = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
infoViewLayoutParams.setMargins(dpToPx(16), dpToPx(12), dpToPx(16), 0);
AndroidUtils.setMargins(infoViewLayoutParams, dpToPx(16), dpToPx(12), dpToPx(16), 0);
infoView.setLayoutParams(infoViewLayoutParams);
baseView.addView(infoView);
@ -962,14 +963,14 @@ public class MenuBuilder {
LinearLayout typeView = new LinearLayout(view.getContext());
typeView.setOrientation(LinearLayout.HORIZONTAL);
LinearLayout.LayoutParams typeViewParams = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
typeViewParams.setMargins(0, dpToPx(8), 0, 0);
AndroidUtils.setMargins(typeViewParams, 0, dpToPx(8), 0, 0);
typeView.setGravity(Gravity.CENTER);
typeView.setLayoutParams(typeViewParams);
infoView.addView(typeView);
ImageView typeImageView = new ImageView(view.getContext());
LinearLayout.LayoutParams typeImageParams = new LinearLayout.LayoutParams(dpToPx(16), dpToPx(16));
typeImageParams.setMargins(dpToPx(4), 0, dpToPx(4), 0);
AndroidUtils.setMargins(typeImageParams, dpToPx(4), 0, dpToPx(4), 0);
typeImageView.setLayoutParams(typeImageParams);
int drawableResId = route.type == null ? R.drawable.ic_action_polygom_dark : route.type.getResourceId();
typeImageView.setImageDrawable(getRowIcon(drawableResId));
@ -1037,7 +1038,7 @@ public class MenuBuilder {
final TextViewEx textView = new TextViewEx(context);
textView.setVisibility(collapsed ? View.GONE : View.VISIBLE);
LinearLayout.LayoutParams llTextDescParams = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
llTextDescParams.setMargins(dpToPx(64f), 0, dpToPx(40f), dpToPx(13f));
AndroidUtils.setMargins(llTextDescParams, dpToPx(64f), 0, dpToPx(40f), dpToPx(13f));
textView.setLayoutParams(llTextDescParams);
textView.setTypeface(FontCache.getRobotoRegular(context));
textView.setTextSize(16);
@ -1074,7 +1075,7 @@ public class MenuBuilder {
view.setVisibility(collapsed ? View.GONE : View.VISIBLE);
LinearLayout.LayoutParams llParams = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
if (needMargin) {
llParams.setMargins(dpToPx(64f), 0, dpToPx(12f), 0);
AndroidUtils.setMargins(llParams, dpToPx(64f), 0, dpToPx(12f), 0);
}
view.setLayoutParams(llParams);
return view;
@ -1087,7 +1088,7 @@ public class MenuBuilder {
protected TextViewEx buildButtonInCollapsableView(Context context, boolean selected, boolean showAll, boolean singleLine) {
TextViewEx button = new TextViewEx(new ContextThemeWrapper(context, light ? R.style.OsmandLightTheme : R.style.OsmandDarkTheme));
LinearLayout.LayoutParams llWikiButtonParams = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
llWikiButtonParams.setMargins(0, 0, 0, dpToPx(8f));
AndroidUtils.setMargins(llWikiButtonParams, 0, 0, 0, dpToPx(8f));
//button.setMinimumHeight(dpToPx(36f));
button.setLayoutParams(llWikiButtonParams);
button.setTypeface(FontCache.getRobotoRegular(context));
@ -1102,7 +1103,7 @@ public class MenuBuilder {
button.setBackgroundResource(bg);
button.setTextSize(14);
int paddingSides = dpToPx(10f);
button.setPadding(paddingSides, paddingSides, paddingSides, paddingSides);
AndroidUtils.setPadding(button, paddingSides, paddingSides, paddingSides, paddingSides);
if (!selected) {
ColorStateList buttonColorStateList = AndroidUtils.createPressedColorStateList(context, !light,
R.color.ctx_menu_controller_button_text_color_light_n, R.color.ctx_menu_controller_button_text_color_light_p,

View file

@ -135,7 +135,7 @@ public class AmenityMenuBuilder extends MenuBuilder {
ImageView iconView = new ImageView(view.getContext());
LinearLayout.LayoutParams llIconParams = new LinearLayout.LayoutParams(dpToPx(24f), dpToPx(24f));
llIconParams.setMargins(dpToPx(16f), dpToPx(12f), dpToPx(24f), dpToPx(12f));
AndroidUtils.setMargins(llIconParams, dpToPx(16f), dpToPx(12f), dpToPx(24f), dpToPx(12f));
llIconParams.gravity = Gravity.CENTER_VERTICAL;
iconView.setLayoutParams(llIconParams);
iconView.setScaleType(ImageView.ScaleType.CENTER_INSIDE);
@ -152,7 +152,7 @@ public class AmenityMenuBuilder extends MenuBuilder {
if (!Algorithms.isEmpty(textPrefix)) {
textPrefixView = new TextView(view.getContext());
LinearLayout.LayoutParams llTextParams = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
llTextParams.setMargins(icon == null ? dpToPx(16f) : 0, dpToPx(8f), 0, 0);
AndroidUtils.setMargins(llTextParams, icon == null ? dpToPx(16f) : 0, dpToPx(8f), 0, 0);
textPrefixView.setLayoutParams(llTextParams);
textPrefixView.setTextSize(12);
textPrefixView.setTextColor(app.getResources().getColor(R.color.ctx_menu_buttons_text_color));
@ -164,7 +164,7 @@ public class AmenityMenuBuilder extends MenuBuilder {
TextView textView = new TextView(view.getContext());
LinearLayout.LayoutParams llTextParams = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
llTextParams.setMargins(icon == null ? dpToPx(16f) : 0,
AndroidUtils.setMargins(llTextParams, icon == null ? dpToPx(16f) : 0,
textPrefixView == null ? (collapsable ? dpToPx(13f) : dpToPx(8f)) : dpToPx(2f), 0, collapsable && textPrefixView == null ? dpToPx(13f) : dpToPx(8f));
textView.setLayoutParams(llTextParams);
textView.setTextSize(16);
@ -200,7 +200,7 @@ public class AmenityMenuBuilder extends MenuBuilder {
LinearLayout.LayoutParams llTextViewParams = new LinearLayout.LayoutParams(0, ViewGroup.LayoutParams.WRAP_CONTENT);
llTextViewParams.weight = 1f;
llTextViewParams.setMargins(0, 0, dpToPx(10f), 0);
AndroidUtils.setMargins(llTextViewParams, 0, 0, dpToPx(10f), 0);
llTextViewParams.gravity = Gravity.CENTER_VERTICAL;
llText.setLayoutParams(llTextViewParams);
if (textPrefixView != null) {
@ -218,7 +218,7 @@ public class AmenityMenuBuilder extends MenuBuilder {
ll.addView(llIconCollapse);
LinearLayout.LayoutParams llIconCollapseParams = new LinearLayout.LayoutParams(dpToPx(24f), dpToPx(24f));
llIconCollapseParams.setMargins(0, dpToPx(12f), dpToPx(24f), dpToPx(12f));
AndroidUtils.setMargins(llIconCollapseParams, 0, dpToPx(12f), dpToPx(24f), dpToPx(12f));
llIconCollapseParams.gravity = Gravity.CENTER_VERTICAL;
iconViewCollapse.setLayoutParams(llIconCollapseParams);
iconViewCollapse.setScaleType(ImageView.ScaleType.CENTER_INSIDE);
@ -248,7 +248,7 @@ public class AmenityMenuBuilder extends MenuBuilder {
if (isWiki) {
TextViewEx button = new TextViewEx(new ContextThemeWrapper(view.getContext(), light ? R.style.OsmandLightTheme : R.style.OsmandDarkTheme));
LinearLayout.LayoutParams llWikiButtonParams = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, dpToPx(36f));
llWikiButtonParams.setMargins(dpToPx(16f), 0, 0, dpToPx(16f));
AndroidUtils.setMargins(llWikiButtonParams, dpToPx(16f), 0, 0, dpToPx(16f));
button.setLayoutParams(llWikiButtonParams);
button.setTypeface(FontCache.getRobotoMedium(app));
button.setBackgroundResource(light ? R.drawable.context_menu_controller_bg_light : R.drawable.context_menu_controller_bg_dark);

View file

@ -11,6 +11,7 @@ import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.core.content.ContextCompat;
import net.osmand.AndroidUtils;
import net.osmand.plus.GpxSelectionHelper.GpxDisplayItem;
import net.osmand.plus.OsmAndFormatter;
import net.osmand.plus.R;
@ -65,7 +66,7 @@ public class GpxItemMenuBuilder extends MenuBuilder {
private void buildIcon(LinearLayout ll, int gpxSmallIconMargin, int iconId) {
ImageView icon = new ImageView(ll.getContext());
LinearLayout.LayoutParams llIconParams = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
llIconParams.setMargins(0, 0, gpxSmallIconMargin, 0);
AndroidUtils.setMargins(llIconParams, 0, 0, gpxSmallIconMargin, 0);
llIconParams.gravity = Gravity.CENTER_VERTICAL;
icon.setLayoutParams(llIconParams);
icon.setImageDrawable(app.getUIUtilities().getThemedIcon(iconId));
@ -75,7 +76,7 @@ public class GpxItemMenuBuilder extends MenuBuilder {
private void buildTextView(LinearLayout ll, int gpxSmallTextMargin, float gpxTextSize, int textColor, String text) {
TextView textView = new TextView(ll.getContext());
LinearLayout.LayoutParams llTextParams = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
llTextParams.setMargins(0, 0, gpxSmallTextMargin, 0);
AndroidUtils.setMargins(llTextParams, 0, 0, gpxSmallTextMargin, 0);
textView.setLayoutParams(llTextParams);
textView.setTextSize(TypedValue.COMPLEX_UNIT_PX, gpxTextSize);
textView.setTextColor(textColor);

View file

@ -64,7 +64,8 @@ public abstract class PointEditorFragment extends BaseOsmAndFragment {
toolbar.setTitle(getToolbarTitle());
OsmandApplication app = requireMyApplication();
Drawable icBack = app.getUIUtilities().getIcon(R.drawable.ic_arrow_back, !editor.isLight() ? R.color.active_buttons_and_links_text_dark : R.color.active_buttons_and_links_text_light);
Drawable icBack = app.getUIUtilities().getIcon(AndroidUtils.getNavigationIconResId(app),
!editor.isLight() ? R.color.active_buttons_and_links_text_dark : R.color.active_buttons_and_links_text_light);
toolbar.setNavigationIcon(icBack);
toolbar.setNavigationContentDescription(R.string.access_shared_string_navigate_up);
toolbar.setTitleTextColor(getResources().getColor(getResIdFromAttribute(getMapActivity(), R.attr.pstsTextColor)));

View file

@ -1,5 +1,6 @@
package net.osmand.plus.mapcontextmenu.other;
import android.graphics.drawable.Drawable;
import android.os.Build;
import android.os.Bundle;
import android.view.LayoutInflater;
@ -207,7 +208,8 @@ public class TrackDetailsMenuFragment extends BaseOsmAndFragment {
ImageButton backButton = (ImageButton) mainView.findViewById(R.id.top_bar_back_button);
if (backButton != null) {
backButton.setImageDrawable(getIcon(R.drawable.ic_arrow_back, R.color.color_white));
Drawable icBack = getIcon(AndroidUtils.getNavigationIconResId(ctx), R.color.color_white);
backButton.setImageDrawable(icBack);
}
}
}

View file

@ -283,7 +283,8 @@ public class CoordinateInputDialogFragment extends DialogFragment implements Osm
TextView optionsButton = mainView.findViewById(R.id.options_button);
if (orientationPortrait) {
backBtn.setImageDrawable(getColoredIcon(R.drawable.ic_arrow_back, lightTheme ? R.color.color_black : R.color.active_buttons_and_links_text_dark));
Drawable icBack = getColoredIcon(AndroidUtils.getNavigationIconResId(getContext()), lightTheme ? R.color.color_black : R.color.active_buttons_and_links_text_dark);
backBtn.setImageDrawable(icBack);
optionsButton.setTextColor(getResolvedColor(lightTheme ? R.color.active_color_primary_light : R.color.active_color_primary_dark));
TextView toolbar = (TextView) mainView.findViewById(R.id.toolbar_text);
toolbar.setTextColor(getResolvedColor(lightTheme ? R.color.text_color_primary_light : R.color.text_color_primary_dark));
@ -291,7 +292,8 @@ public class CoordinateInputDialogFragment extends DialogFragment implements Osm
setBackgroundColor(R.id.app_bar, lightTheme ? R.color.route_info_bg_light : R.color.route_info_bg_dark);
setBackgroundColor(mainView, lightTheme ? R.color.activity_background_color_light : R.color.activity_background_color_dark);
} else {
backBtn.setImageDrawable(getColoredIcon(R.drawable.ic_arrow_back, lightTheme ? R.color.active_buttons_and_links_text_light : R.color.active_buttons_and_links_text_dark));
Drawable icBack = getColoredIcon(AndroidUtils.getNavigationIconResId(getContext()), lightTheme ? R.color.active_buttons_and_links_text_light : R.color.active_buttons_and_links_text_dark);
backBtn.setImageDrawable(icBack);
optionsButton.setTextColor(getResolvedColor(lightTheme ? R.color.color_white : R.color.active_color_primary_dark));
TextView toolbar = (TextView) mainView.findViewById(R.id.toolbar_text);
toolbar.setTextColor(getResolvedColor(lightTheme ? R.color.color_white : R.color.text_color_primary_dark));

View file

@ -70,7 +70,8 @@ public class DirectionIndicationDialogFragment extends BaseOsmAndDialogFragment
mainView = UiUtilities.getInflater(getContext(), !settings.isLightContent()).inflate(R.layout.fragment_direction_indication_dialog, container);
Toolbar toolbar = (Toolbar) mainView.findViewById(R.id.toolbar);
toolbar.setNavigationIcon(getIconsCache().getIcon(R.drawable.ic_arrow_back));
int navigationIconResId = AndroidUtils.getNavigationIconResId(getContext());
toolbar.setNavigationIcon(getIconsCache().getIcon(navigationIconResId));
toolbar.setNavigationContentDescription(R.string.access_shared_string_navigate_up);
toolbar.setNavigationOnClickListener(new View.OnClickListener() {
@Override

View file

@ -25,6 +25,7 @@ import androidx.fragment.app.FragmentPagerAdapter;
import com.google.android.material.bottomnavigation.BottomNavigationView;
import com.google.android.material.snackbar.Snackbar;
import net.osmand.AndroidUtils;
import net.osmand.Location;
import net.osmand.data.LatLon;
import net.osmand.plus.LockableViewPager;
@ -150,7 +151,7 @@ public class MapMarkersDialogFragment extends DialogFragment implements OnGroupS
View mainView = inflater.inflate(R.layout.fragment_map_markers_dialog, container);
Toolbar toolbar = (Toolbar) mainView.findViewById(R.id.map_markers_toolbar);
Drawable icArrowBack = getMyApplication().getUIUtilities().getIcon(R.drawable.ic_arrow_back,
Drawable icArrowBack = getMyApplication().getUIUtilities().getIcon(AndroidUtils.getNavigationIconResId(getContext()),
lightTheme ? R.color.active_buttons_and_links_text_light : R.color.active_buttons_and_links_text_dark);
toolbar.setNavigationIcon(icArrowBack);
toolbar.setNavigationContentDescription(R.string.access_shared_string_navigate_up);

View file

@ -251,7 +251,8 @@ public class PlanRouteFragment extends BaseOsmAndFragment implements OsmAndLocat
}
Toolbar toolbar = (Toolbar) mainView.findViewById(R.id.plan_route_toolbar);
toolbar.setNavigationIcon(getContentIcon(R.drawable.ic_arrow_back));
Drawable icBack = getContentIcon(AndroidUtils.getNavigationIconResId(mapActivity));
toolbar.setNavigationIcon(icBack);
toolbar.setNavigationContentDescription(R.string.access_shared_string_navigate_up);
toolbar.setNavigationOnClickListener(new View.OnClickListener() {
@Override

View file

@ -107,9 +107,6 @@ public class SaveAsTrackBottomSheetDialogFragment extends BottomSheetDialogFragm
final EditText nameEditText = (EditText) mainView.findViewById(R.id.name_edit_text);
nameEditText.setText(displayedName);
nameEditText.setTextColor(ContextCompat.getColor(getContext(), textPrimaryColor));
if (textBox instanceof OsmandTextFieldBoxes) {
((OsmandTextFieldBoxes) textBox).activate(true);
}
mainView.findViewById(R.id.save_button).setOnClickListener(new View.OnClickListener() {
@Override

View file

@ -87,7 +87,6 @@ public class OnSaveCurrentTrackFragment extends BottomSheetDialogFragment {
final EditText nameEditText = (EditText) mainView.findViewById(R.id.name_edit_text);
nameEditText.setText(savedGpxName);
nameEditText.setTextColor(ContextCompat.getColor(ctx, textPrimaryColor));
textBox.activate(true);
nameEditText.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {

View file

@ -32,8 +32,8 @@ public class GpxDescriptionDialogFragment extends BaseOsmAndDialogFragment {
final Toolbar topBar = new Toolbar(ctx);
topBar.setClickable(true);
Drawable back = getMyApplication().getUIUtilities().getIcon(R.drawable.ic_arrow_back);
topBar.setNavigationIcon(back);
Drawable icBack = getMyApplication().getUIUtilities().getIcon(AndroidUtils.getNavigationIconResId(ctx));
topBar.setNavigationIcon(icBack);
topBar.setNavigationContentDescription(R.string.access_shared_string_navigate_up);
topBar.setTitle(R.string.shared_string_description);
topBar.setBackgroundColor(ContextCompat.getColor(ctx, AndroidUtils.resolveAttribute(ctx, R.attr.pstsTabBackground)));

View file

@ -5,6 +5,7 @@ import android.content.DialogInterface;
import android.content.res.ColorStateList;
import android.graphics.Paint;
import android.graphics.Rect;
import android.graphics.drawable.Drawable;
import android.os.AsyncTask;
import android.os.Bundle;
import android.util.DisplayMetrics;
@ -118,7 +119,8 @@ public class SplitSegmentDialogFragment extends DialogFragment {
if (trackActivityActionBar != null) {
titleTextView.setText(trackActivityActionBar.getTitle());
}
toolbar.setNavigationIcon(ic.getIcon(R.drawable.ic_arrow_back));
Drawable icBack = ic.getIcon(AndroidUtils.getNavigationIconResId(app));
toolbar.setNavigationIcon(icBack);
toolbar.setNavigationContentDescription(R.string.access_shared_string_navigate_up);
toolbar.setNavigationOnClickListener(new View.OnClickListener() {
@Override

View file

@ -7,6 +7,7 @@ import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.res.Resources;
import android.graphics.drawable.Drawable;
import android.net.Uri;
import android.os.AsyncTask;
import android.os.Build;
@ -145,7 +146,8 @@ public class EditPoiDialogFragment extends BaseOsmAndDialogFragment {
Toolbar toolbar = (Toolbar) view.findViewById(R.id.toolbar);
toolbar.setTitle(isAddingPoi ? R.string.poi_create_title : R.string.poi_edit_title);
toolbar.setNavigationIcon(R.drawable.ic_arrow_back);
Drawable icBack = getMyApplication().getUIUtilities().getIcon(AndroidUtils.getNavigationIconResId(getContext()));
toolbar.setNavigationIcon(icBack);
toolbar.setNavigationContentDescription(R.string.access_shared_string_navigate_up);
toolbar.setNavigationOnClickListener(new View.OnClickListener() {
@Override

View file

@ -4,6 +4,7 @@ import android.app.Dialog;
import android.content.DialogInterface;
import android.graphics.Color;
import android.graphics.drawable.ColorDrawable;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.text.Editable;
import android.text.TextWatcher;
@ -21,6 +22,7 @@ import androidx.appcompat.widget.Toolbar;
import androidx.core.content.ContextCompat;
import androidx.fragment.app.DialogFragment;
import net.osmand.AndroidUtils;
import net.osmand.plus.OsmandApplication;
import net.osmand.plus.R;
import net.osmand.plus.UiUtilities;
@ -152,7 +154,8 @@ public class CreateEditActionDialog extends DialogFragment {
int buttonsAndLinksTextColorResId = isLightContent ? R.color.active_buttons_and_links_text_light : R.color.active_buttons_and_links_text_dark;
toolbar.setTitleTextColor(ContextCompat.getColor(getContext(), buttonsAndLinksTextColorResId));
toolbar.setNavigationIcon(getIconsCache().getIcon(R.drawable.ic_arrow_back, buttonsAndLinksTextColorResId));
Drawable icBack = getIconsCache().getIcon(AndroidUtils.getNavigationIconResId(getContext()), buttonsAndLinksTextColorResId);
toolbar.setNavigationIcon(icBack);
toolbar.setNavigationContentDescription(R.string.access_shared_string_navigate_up);

View file

@ -28,6 +28,7 @@ import androidx.recyclerview.widget.RecyclerView;
import com.google.android.material.floatingactionbutton.FloatingActionButton;
import net.osmand.AndroidUtils;
import net.osmand.plus.OsmandApplication;
import net.osmand.plus.R;
import net.osmand.plus.UiUtilities;
import net.osmand.plus.activities.MapActivity;
@ -122,9 +123,10 @@ public class QuickActionListFragment extends BaseOsmAndFragment implements Quick
private void setUpToolbar(View view) {
Toolbar toolbar = (Toolbar) view.findViewById(R.id.custom_toolbar);
Drawable back = getMyApplication().getUIUtilities().getIcon(R.drawable.ic_arrow_back,
OsmandApplication app = requireMyApplication();
Drawable icBack = app.getUIUtilities().getIcon(AndroidUtils.getNavigationIconResId(app),
isLightContent ? R.color.active_buttons_and_links_text_light : R.color.active_buttons_and_links_text_dark);
toolbar.setNavigationIcon(back);
toolbar.setNavigationIcon(icBack);
toolbar.setNavigationContentDescription(R.string.access_shared_string_navigate_up);
toolbar.setNavigationOnClickListener(new View.OnClickListener() {
@Override

View file

@ -102,7 +102,8 @@ public class AvoidRoadsBottomSheetDialogFragment extends MenuBottomSheetDialogFr
textView.setText(!hideImpassableRoads ? R.string.impassable_road : R.string.avoid_pt_types);
Toolbar toolbar = (Toolbar) titleView.findViewById(R.id.toolbar);
toolbar.setNavigationIcon(getContentIcon(R.drawable.ic_arrow_back));
int icBackResId = AndroidUtils.getNavigationIconResId(app);
toolbar.setNavigationIcon(getContentIcon(icBackResId));
toolbar.setNavigationContentDescription(R.string.access_shared_string_navigate_up);
toolbar.setNavigationOnClickListener(new View.OnClickListener() {
@Override

View file

@ -25,6 +25,8 @@ import androidx.annotation.DrawableRes;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.appcompat.view.ContextThemeWrapper;
import androidx.appcompat.widget.AppCompatImageButton;
import androidx.appcompat.widget.AppCompatImageView;
import androidx.core.app.ActivityCompat;
import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentManager;
@ -482,8 +484,8 @@ public class ChooseRouteFragment extends BaseOsmAndFragment implements ContextMe
}
private void buildMenuButtons(@NonNull View view) {
View backButton = view.findViewById(R.id.back_button);
View backButtonFlow = view.findViewById(R.id.back_button_flow);
AppCompatImageView backButton = (AppCompatImageView) view.findViewById(R.id.back_button);
AppCompatImageButton backButtonFlow = (AppCompatImageButton) view.findViewById(R.id.back_button_flow);
OnClickListener backOnClick = new OnClickListener() {
@Override
public void onClick(View v) {
@ -492,6 +494,9 @@ public class ChooseRouteFragment extends BaseOsmAndFragment implements ContextMe
};
backButton.setOnClickListener(backOnClick);
backButtonFlow.setOnClickListener(backOnClick);
int navigationIconResId = AndroidUtils.getNavigationIconResId(getContext());
backButton.setImageResource(navigationIconResId);
backButtonFlow.setImageResource(navigationIconResId);
OnClickListener printOnClick = new OnClickListener() {
@Override

View file

@ -954,7 +954,6 @@ public class MapRouteInfoMenu implements IRouteInformationListener, CardListener
}
};
ll.getViewTreeObserver().addOnGlobalLayoutListener(globalListener);
}
private void updateOptionsButtons() {

View file

@ -20,6 +20,7 @@ import androidx.appcompat.widget.Toolbar;
import androidx.core.content.ContextCompat;
import androidx.fragment.app.Fragment;
import net.osmand.AndroidUtils;
import net.osmand.ValueHolder;
import net.osmand.plus.ApplicationMode;
import net.osmand.plus.DialogListItemAdapter;
@ -85,7 +86,8 @@ public class ShowAlongTheRouteBottomSheet extends MenuBottomSheetDialogFragment
textView.setText(R.string.show_along_the_route);
Toolbar toolbar = (Toolbar) titleView.findViewById(R.id.toolbar);
toolbar.setNavigationIcon(getContentIcon(R.drawable.ic_arrow_back));
Drawable icBack = getContentIcon(AndroidUtils.getNavigationIconResId(ctx));
toolbar.setNavigationIcon(icBack);
toolbar.setNavigationContentDescription(R.string.access_shared_string_navigate_up);
toolbar.setNavigationOnClickListener(new View.OnClickListener() {
@Override

View file

@ -1,6 +1,7 @@
package net.osmand.plus.routepreparationmenu;
import android.content.Context;
import android.graphics.drawable.Drawable;
import android.os.Build;
import android.os.Bundle;
import android.os.CountDownTimer;
@ -116,7 +117,8 @@ public class WaypointsFragment extends BaseOsmAndFragment implements ObservableS
listView.setDynamicListViewCallbacks(this);
final ImageView backButton = (ImageView) view.findViewById(R.id.back_button);
backButton.setImageDrawable(getContentIcon(R.drawable.ic_arrow_back));
Drawable icBack = getContentIcon(AndroidUtils.getNavigationIconResId(mapActivity));
backButton.setImageDrawable(icBack);
backButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {

View file

@ -31,6 +31,7 @@ import com.google.openlocationcode.OpenLocationCode;
import com.jwetherell.openmap.common.LatLonPoint;
import com.jwetherell.openmap.common.UTMPoint;
import net.osmand.AndroidUtils;
import net.osmand.Collator;
import net.osmand.CollatorStringMatcher;
import net.osmand.LocationConvert;
@ -131,7 +132,7 @@ public class QuickSearchCoordinatesFragment extends DialogFragment implements Os
view = inflater.inflate(R.layout.search_advanced_coords, container, false);
Toolbar toolbar = (Toolbar) view.findViewById(R.id.toolbar);
Drawable icBack = app.getUIUtilities().getIcon(R.drawable.ic_arrow_back,
Drawable icBack = app.getUIUtilities().getIcon(AndroidUtils.getNavigationIconResId(app),
isLightTheme ? R.color.active_buttons_and_links_text_light : R.color.active_buttons_and_links_text_dark);
toolbar.setNavigationIcon(icBack);
toolbar.setNavigationContentDescription(R.string.access_shared_string_navigate_up);

View file

@ -5,6 +5,7 @@ import android.app.Dialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.res.Resources;
import android.graphics.drawable.Drawable;
import android.os.AsyncTask;
import android.os.Bundle;
import android.text.Editable;
@ -451,7 +452,8 @@ public class QuickSearchDialogFragment extends DialogFragment implements OsmAndC
if (!app.getSettings().isLightContent()) {
toolbar.setBackgroundColor(ContextCompat.getColor(mapActivity, R.color.app_bar_color_dark));
}
toolbar.setNavigationIcon(app.getUIUtilities().getThemedIcon(R.drawable.ic_arrow_back));
Drawable icBack = app.getUIUtilities().getThemedIcon(AndroidUtils.getNavigationIconResId(app));
toolbar.setNavigationIcon(icBack);
toolbar.setNavigationContentDescription(R.string.access_shared_string_navigate_up);
toolbar.setNavigationOnClickListener(
new OnClickListener() {

View file

@ -440,7 +440,7 @@ public class QuickSearchListAdapter extends ArrayAdapter<QuickSearchListItem> {
divider.setLayoutParams(p);
} else {
LinearLayout.LayoutParams p = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, dp1);
p.setMargins(dp56, 0, 0 ,0);
AndroidUtils.setMargins(p, dp56, 0, 0, 0);
divider.setLayoutParams(p);
}
}

View file

@ -1,5 +1,6 @@
package net.osmand.plus.settings;
import android.graphics.drawable.Drawable;
import android.os.Build;
import android.os.Bundle;
import android.view.LayoutInflater;
@ -241,10 +242,11 @@ public class ImportDuplicatesFragment extends BaseOsmAndFragment implements View
}
private void setupToolbar(Toolbar toolbar) {
toolbar.setNavigationIcon(getPaintedContentIcon(R.drawable.ic_arrow_back,
Drawable icBack = getPaintedContentIcon(AndroidUtils.getNavigationIconResId(getContext()),
nightMode
? getResources().getColor(R.color.active_buttons_and_links_text_dark)
: getResources().getColor(R.color.active_buttons_and_links_text_light)));
: getResources().getColor(R.color.active_buttons_and_links_text_light));
toolbar.setNavigationIcon(icBack);
toolbar.setNavigationContentDescription(R.string.access_shared_string_navigate_up);
toolbar.setNavigationOnClickListener(new View.OnClickListener() {
@Override

View file

@ -3,8 +3,8 @@ package net.osmand.plus.settings.bottomsheets;
import android.content.Context;
import android.os.Bundle;
import android.view.View;
import android.view.ViewGroup;
import android.widget.EditText;
import android.widget.RelativeLayout;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
@ -51,9 +51,9 @@ public class EditTextPreferenceBottomSheet extends BasePreferenceBottomSheet {
editText = view.findViewById(R.id.edit_text);
editText.setText(text);
RelativeLayout editTextLayout = view.findViewById(R.id.text_field_boxes_editTextLayout);
if (editTextLayout != null && editTextLayout.getLayoutParams() instanceof RelativeLayout.LayoutParams) {
RelativeLayout.LayoutParams params = (RelativeLayout.LayoutParams) editTextLayout.getLayoutParams();
ViewGroup editTextLayout = view.findViewById(R.id.text_field_boxes_editTextLayout);
if (editTextLayout != null && editTextLayout.getLayoutParams() instanceof ViewGroup.MarginLayoutParams) {
ViewGroup.MarginLayoutParams params = (ViewGroup.MarginLayoutParams) editTextLayout.getLayoutParams();
params.setMargins(params.leftMargin, AndroidUtils.dpToPx(ctx, 9), params.rightMargin, params.bottomMargin);
}

View file

@ -24,6 +24,7 @@ import android.widget.TextView;
import androidx.appcompat.widget.Toolbar;
import androidx.core.content.ContextCompat;
import net.osmand.AndroidUtils;
import net.osmand.PlatformUtil;
import net.osmand.ResultMatcher;
import net.osmand.ValueHolder;
@ -313,8 +314,8 @@ public class POIMapLayer extends OsmandMapLayer implements ContextMenuLayer.ICon
final Toolbar topBar = new Toolbar(ctx);
topBar.setClickable(true);
Drawable back = app.getUIUtilities().getIcon(R.drawable.ic_arrow_back);
topBar.setNavigationIcon(back);
Drawable icBack = app.getUIUtilities().getIcon(AndroidUtils.getNavigationIconResId(ctx));
topBar.setNavigationIcon(icBack);
topBar.setNavigationContentDescription(R.string.access_shared_string_navigate_up);
topBar.setTitle(title);
topBar.setBackgroundColor(ContextCompat.getColor(ctx, getResIdFromAttribute(ctx, R.attr.pstsTabBackground)));

View file

@ -2,20 +2,11 @@ package net.osmand.plus.widgets;
import android.content.Context;
import android.util.AttributeSet;
import android.view.View;
import android.view.inputmethod.InputMethodManager;
import androidx.core.view.ViewCompat;
import net.osmand.plus.R;
import studio.carbonylgroup.textfieldboxes.ExtendedEditText;
import studio.carbonylgroup.textfieldboxes.TextFieldBoxes;
public class OsmandTextFieldBoxes extends TextFieldBoxes {
private boolean useOsmandKeyboard;
public OsmandTextFieldBoxes(Context context) {
super(context);
}
@ -28,83 +19,4 @@ public class OsmandTextFieldBoxes extends TextFieldBoxes {
super(context, attrs, defStyleAttr);
}
public void setUseOsmandKeyboard(boolean useOsmandKeyboard) {
this.useOsmandKeyboard = useOsmandKeyboard;
}
@Override
protected void onFinishInflate() {
super.onFinishInflate();
if (editText != null) {
this.panel.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View view) {
select();
}
});
this.iconImageButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
select();
}
});
}
}
public void select() {
if(!OsmandTextFieldBoxes.this.isActivated()) {
OsmandTextFieldBoxes.this.activate(true);
}
OsmandTextFieldBoxes.this.setHasFocus(true);
if (!useOsmandKeyboard) {
OsmandTextFieldBoxes.this.inputMethodManager.showSoftInput(OsmandTextFieldBoxes.this.editText, InputMethodManager.SHOW_IMPLICIT);
}
performClick();
}
@Override
public void activate(boolean animated) {
super.activate(animated);
}
@Override
public void deactivate() {
if(this.editText.getText().toString().isEmpty()) {
ViewCompat.animate(this.floatingLabel).alpha(1.0F).scaleX(1.0F).scaleY(1.0F).translationY(0.0F).setDuration((long)this.ANIMATION_DURATION);
this.editTextLayout.setVisibility(View.INVISIBLE);
if(this.editText.hasFocus()) {
if (!useOsmandKeyboard) {
this.inputMethodManager.hideSoftInputFromWindow(this.editText.getWindowToken(), InputMethodManager.RESULT_UNCHANGED_SHOWN);
}
this.editText.clearFocus();
}
}
this.activated = false;
}
public ExtendedEditText getEditText() {
return editText;
}
@Override
protected void makeCursorBlink() {
CharSequence hintCache = this.editText.getHint();
this.editText.setHint(" ");
this.editText.setHint(hintCache);
}
@Override
public void setError(String errorText, boolean giveFocus) {
super.setError(errorText, giveFocus);
this.findViewById(R.id.text_field_boxes_bottom).setVisibility(View.VISIBLE);
}
@Override
public void removeError() {
super.removeError();
this.findViewById(R.id.text_field_boxes_bottom).setVisibility(View.GONE);
}
}

View file

@ -21,6 +21,7 @@ import androidx.core.content.ContextCompat;
import androidx.fragment.app.FragmentManager;
import androidx.fragment.app.FragmentTransaction;
import net.osmand.AndroidUtils;
import net.osmand.plus.R;
import net.osmand.plus.base.BaseOsmAndDialogFragment;
@ -84,7 +85,8 @@ public class WikiBaseDialogFragment extends BaseOsmAndDialogFragment {
}
protected void setupToolbar(Toolbar toolbar) {
toolbar.setNavigationIcon(getContentIcon(R.drawable.ic_arrow_back));
Drawable icBack = getContentIcon(AndroidUtils.getNavigationIconResId(getContext()));
toolbar.setNavigationIcon(icBack);
toolbar.setNavigationContentDescription(R.string.access_shared_string_navigate_up);
toolbar.setNavigationOnClickListener(new View.OnClickListener() {
@Override

View file

@ -1,6 +1,7 @@
package net.osmand.plus.wikivoyage;
import android.content.Intent;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
@ -13,6 +14,7 @@ import androidx.annotation.Nullable;
import androidx.fragment.app.FragmentActivity;
import androidx.fragment.app.FragmentManager;
import net.osmand.AndroidUtils;
import net.osmand.plus.R;
import net.osmand.plus.helpers.AndroidUiHelper;
import net.osmand.plus.wikivoyage.explore.WikivoyageExploreActivity;
@ -28,8 +30,9 @@ public class WikivoyageWelcomeDialogFragment extends WikiBaseDialogFragment {
View mainView = inflate(R.layout.fragment_wikivoyage_welcome_dialog, container);
Drawable icBack = getContentIcon(AndroidUtils.getNavigationIconResId(getContext()));
ImageView backBtn = (ImageView) mainView.findViewById(R.id.back_button);
backBtn.setImageDrawable(getContentIcon(R.drawable.ic_arrow_back));
backBtn.setImageDrawable(icBack);
backBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {

View file

@ -85,7 +85,8 @@ public class WikivoyageExploreActivity extends TabActivity implements DownloadEv
}
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
toolbar.setNavigationIcon(getContentIcon(R.drawable.ic_arrow_back));
Drawable icBack = getContentIcon(AndroidUtils.getNavigationIconResId(app));
toolbar.setNavigationIcon(icBack);
toolbar.setNavigationContentDescription(R.string.access_shared_string_navigate_up);
toolbar.setNavigationOnClickListener(new View.OnClickListener() {
@Override