Replace GridView with custom keyboard layout
This commit is contained in:
parent
90535fb6be
commit
5e3b68ef3f
13 changed files with 362 additions and 163 deletions
5
OsmAnd/res/drawable/keyboard_item_control_dark_bg.xml
Normal file
5
OsmAnd/res/drawable/keyboard_item_control_dark_bg.xml
Normal file
|
@ -0,0 +1,5 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<selector xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<item android:drawable="@color/keyboard_item_pressed_bg" android:state_pressed="true"/>
|
||||
<item android:drawable="@color/keyboard_item_control_dark_bg"/>
|
||||
</selector>
|
5
OsmAnd/res/drawable/keyboard_item_control_light_bg.xml
Normal file
5
OsmAnd/res/drawable/keyboard_item_control_light_bg.xml
Normal file
|
@ -0,0 +1,5 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<selector xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<item android:drawable="@color/keyboard_item_pressed_bg" android:state_pressed="true"/>
|
||||
<item android:drawable="@color/keyboard_item_control_light_bg"/>
|
||||
</selector>
|
5
OsmAnd/res/drawable/keyboard_item_dark_bg.xml
Normal file
5
OsmAnd/res/drawable/keyboard_item_dark_bg.xml
Normal file
|
@ -0,0 +1,5 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<selector xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<item android:drawable="@color/keyboard_item_pressed_bg" android:state_pressed="true"/>
|
||||
<item android:drawable="@color/keyboard_item_dark_bg"/>
|
||||
</selector>
|
5
OsmAnd/res/drawable/keyboard_item_light_bg.xml
Normal file
5
OsmAnd/res/drawable/keyboard_item_light_bg.xml
Normal file
|
@ -0,0 +1,5 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<selector xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<item android:drawable="@color/keyboard_item_pressed_bg" android:state_pressed="true"/>
|
||||
<item android:drawable="@color/keyboard_item_light_bg"/>
|
||||
</selector>
|
202
OsmAnd/res/layout/coordinate_input_keyboard.xml
Normal file
202
OsmAnd/res/layout/coordinate_input_keyboard.xml
Normal file
|
@ -0,0 +1,202 @@
|
|||
<?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:id="@+id/keyboard_view"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="vertical"
|
||||
tools:background="@color/keyboard_divider_dark">
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:baselineAligned="false">
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1"
|
||||
android:orientation="vertical">
|
||||
|
||||
<include
|
||||
android:id="@+id/keyboard_item_1"
|
||||
layout="@layout/coordinate_input_keyboard_item"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="@dimen/coords_input_keyboard_item_height"/>
|
||||
|
||||
<View
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="1dp"/>
|
||||
|
||||
<include
|
||||
android:id="@+id/keyboard_item_4"
|
||||
layout="@layout/coordinate_input_keyboard_item"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="@dimen/coords_input_keyboard_item_height"/>
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<View
|
||||
android:layout_width="1dp"
|
||||
android:layout_height="match_parent"/>
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1"
|
||||
android:orientation="vertical">
|
||||
|
||||
<include
|
||||
android:id="@+id/keyboard_item_2"
|
||||
layout="@layout/coordinate_input_keyboard_item"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="@dimen/coords_input_keyboard_item_height"/>
|
||||
|
||||
<View
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="1dp"/>
|
||||
|
||||
<include
|
||||
android:id="@+id/keyboard_item_5"
|
||||
layout="@layout/coordinate_input_keyboard_item"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="@dimen/coords_input_keyboard_item_height"/>
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<View
|
||||
android:layout_width="1dp"
|
||||
android:layout_height="match_parent"/>
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1"
|
||||
android:orientation="vertical">
|
||||
|
||||
<include
|
||||
android:id="@+id/keyboard_item_3"
|
||||
layout="@layout/coordinate_input_keyboard_item"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="@dimen/coords_input_keyboard_item_height"/>
|
||||
|
||||
<View
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="1dp"/>
|
||||
|
||||
<include
|
||||
android:id="@+id/keyboard_item_6"
|
||||
layout="@layout/coordinate_input_keyboard_item"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="@dimen/coords_input_keyboard_item_height"/>
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<View
|
||||
android:layout_width="1dp"
|
||||
android:layout_height="match_parent"/>
|
||||
|
||||
<include
|
||||
android:id="@+id/keyboard_item_next_field"
|
||||
layout="@layout/coordinate_input_keyboard_item"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_weight="1"/>
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<View
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="1dp"/>
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:baselineAligned="false">
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="2"
|
||||
android:orientation="vertical">
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:baselineAligned="false">
|
||||
|
||||
<include
|
||||
android:id="@+id/keyboard_item_7"
|
||||
layout="@layout/coordinate_input_keyboard_item"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="@dimen/coords_input_keyboard_item_height"
|
||||
android:layout_weight="1"/>
|
||||
|
||||
<View
|
||||
android:layout_width="1dp"
|
||||
android:layout_height="match_parent"/>
|
||||
|
||||
<include
|
||||
android:id="@+id/keyboard_item_8"
|
||||
layout="@layout/coordinate_input_keyboard_item"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="@dimen/coords_input_keyboard_item_height"
|
||||
android:layout_weight="1"/>
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<View
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="1dp"/>
|
||||
|
||||
<include
|
||||
android:id="@+id/keyboard_item_0"
|
||||
layout="@layout/coordinate_input_keyboard_item"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="@dimen/coords_input_keyboard_item_height"/>
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<View
|
||||
android:layout_width="1dp"
|
||||
android:layout_height="match_parent"/>
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1"
|
||||
android:orientation="vertical">
|
||||
|
||||
<include
|
||||
android:id="@+id/keyboard_item_9"
|
||||
layout="@layout/coordinate_input_keyboard_item"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="@dimen/coords_input_keyboard_item_height"/>
|
||||
|
||||
<View
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="1dp"/>
|
||||
|
||||
<include
|
||||
android:id="@+id/keyboard_item_clear"
|
||||
layout="@layout/coordinate_input_keyboard_item"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="@dimen/coords_input_keyboard_item_height"/>
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<View
|
||||
android:layout_width="1dp"
|
||||
android:layout_height="match_parent"/>
|
||||
|
||||
<include
|
||||
android:id="@+id/keyboard_item_backspace"
|
||||
layout="@layout/coordinate_input_keyboard_item"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_weight="1"/>
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
</LinearLayout>
|
|
@ -1,9 +1,11 @@
|
|||
<?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="match_parent"
|
||||
android:layout_height="56dp"
|
||||
android:orientation="vertical">
|
||||
<LinearLayout
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:orientation="vertical"
|
||||
tools:background="@color/keyboard_item_dark_bg">
|
||||
|
||||
<View
|
||||
android:id="@+id/keyboard_item_top_spacing"
|
||||
|
@ -35,4 +37,4 @@
|
|||
android:scaleType="center"
|
||||
tools:src="@drawable/ic_action_backspace_fill"/>
|
||||
|
||||
</LinearLayout>
|
||||
</LinearLayout>
|
||||
|
|
|
@ -21,14 +21,7 @@
|
|||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="bottom">
|
||||
|
||||
<GridView
|
||||
android:id="@+id/keyboard_grid_view"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:horizontalSpacing="1dp"
|
||||
android:numColumns="4"
|
||||
android:stretchMode="columnWidth"
|
||||
android:verticalSpacing="1dp"/>
|
||||
<include layout="@layout/coordinate_input_keyboard"/>
|
||||
|
||||
</FrameLayout>
|
||||
|
||||
|
|
|
@ -95,14 +95,7 @@
|
|||
android:layout_gravity="bottom"
|
||||
android:orientation="vertical">
|
||||
|
||||
<GridView
|
||||
android:id="@+id/keyboard_grid_view"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:horizontalSpacing="1dp"
|
||||
android:numColumns="4"
|
||||
android:stretchMode="columnWidth"
|
||||
android:verticalSpacing="1dp"/>
|
||||
<include layout="@layout/coordinate_input_keyboard"/>
|
||||
|
||||
<View
|
||||
android:id="@+id/keyboard_divider"
|
||||
|
|
|
@ -9,4 +9,6 @@
|
|||
<dimen name="empty_state_image_margin_bottom">39dp</dimen>
|
||||
|
||||
<dimen name="measurement_tool_content_padding_medium">14dp</dimen>
|
||||
|
||||
<dimen name="coords_input_keyboard_item_height">50dp</dimen>
|
||||
</resources>
|
|
@ -285,7 +285,7 @@
|
|||
<color name="keyboard_item_text_color_light">#333333</color>
|
||||
<color name="keyboard_item_text_color_light_pressed">#ffffff</color>
|
||||
<color name="keyboard_item_text_color_dark">#cccccc</color>
|
||||
<color name="keyboard_item_bg_pressed">#536dfe</color>
|
||||
<color name="keyboard_item_pressed_bg">#536dfe</color>
|
||||
<color name="keyboard_item_light_bg">#fff</color>
|
||||
<color name="keyboard_item_dark_bg">#17191a</color>
|
||||
<color name="keyboard_item_control_light_bg">#f2f2f2</color>
|
||||
|
|
|
@ -264,4 +264,5 @@
|
|||
<dimen name="side_of_the_world_button_size">36dp</dimen>
|
||||
|
||||
<dimen name="coords_input_show_hide_keyboard_btn_padding">13dp</dimen>
|
||||
<dimen name="coords_input_keyboard_item_height">56dp</dimen>
|
||||
</resources>
|
|
@ -142,6 +142,10 @@ public class AndroidUtils {
|
|||
return null;
|
||||
}
|
||||
|
||||
public static ColorStateList createColorStateList(Context ctx, @ColorRes int normal, @ColorRes int pressed) {
|
||||
return createColorStateList(ctx, false, normal, pressed, 0, 0);
|
||||
}
|
||||
|
||||
public static ColorStateList createColorStateList(Context ctx, boolean night,
|
||||
@ColorRes int lightNormal, @ColorRes int lightPressed,
|
||||
@ColorRes int darkNormal, @ColorRes int darkPressed) {
|
||||
|
|
|
@ -37,10 +37,8 @@ import android.view.ViewGroup;
|
|||
import android.view.Window;
|
||||
import android.view.WindowManager;
|
||||
import android.view.inputmethod.EditorInfo;
|
||||
import android.widget.ArrayAdapter;
|
||||
import android.widget.EditText;
|
||||
import android.widget.FrameLayout;
|
||||
import android.widget.GridView;
|
||||
import android.widget.ImageButton;
|
||||
import android.widget.ImageView;
|
||||
import android.widget.LinearLayout;
|
||||
|
@ -78,12 +76,6 @@ public class CoordinateInputDialogFragment extends DialogFragment implements Osm
|
|||
|
||||
public static final String USE_OSMAND_KEYBOARD = "use_osmand_keyboard";
|
||||
|
||||
private static final int SWITCH_TO_NEXT_INPUT_BUTTON_POSITION = 3;
|
||||
private static final int MINUS_BUTTON_POSITION = 7;
|
||||
private static final int BACKSPACE_BUTTON_POSITION = 11;
|
||||
private static final int COLON_BUTTON_POSITION = 12;
|
||||
private static final int POINT_BUTTON_POSITION = 14;
|
||||
private static final int CLEAR_BUTTON_POSITION = 15;
|
||||
private static final String LATITUDE_LABEL = "latitude";
|
||||
private static final String LONGITUDE_LABEL = "longitude";
|
||||
private static final String NAME_LABEL = "name";
|
||||
|
@ -301,32 +293,28 @@ public class CoordinateInputDialogFragment extends DialogFragment implements Osm
|
|||
}
|
||||
});
|
||||
|
||||
mainView.findViewById(R.id.keyboard_layout).setBackgroundResource(lightTheme ? R.drawable.bg_bottom_menu_light : R.drawable.bg_coordinate_input_keyboard_dark);
|
||||
mainView.findViewById(R.id.keyboard_layout).setBackgroundResource(lightTheme
|
||||
? R.drawable.bg_bottom_menu_light : R.drawable.bg_coordinate_input_keyboard_dark);
|
||||
|
||||
View keyboardView = mainView.findViewById(R.id.keyboard_view);
|
||||
|
||||
Object[] keyboardItems = new Object[]{
|
||||
"1", "2", "3", R.drawable.ic_keyboard_next_field,
|
||||
"4", "5", "6", "-",
|
||||
"7", "8", "9", R.drawable.ic_keyboard_backspace,
|
||||
":", "0", ".", getString(R.string.shared_string_clear)
|
||||
};
|
||||
final GridView keyboardGrid = (GridView) mainView.findViewById(R.id.keyboard_grid_view);
|
||||
int dividersColorResId = lightTheme ? R.color.keyboard_divider_light : R.color.keyboard_divider_dark;
|
||||
setBackgroundColor(keyboardGrid, dividersColorResId);
|
||||
setBackgroundColor(keyboardView, dividersColorResId);
|
||||
setBackgroundColor(R.id.keyboard_divider, dividersColorResId);
|
||||
final KeyboardAdapter keyboardAdapter = new KeyboardAdapter(mapActivity, keyboardItems);
|
||||
keyboardAdapter.setListener(new View.OnClickListener() {
|
||||
|
||||
View.OnClickListener onClickListener = new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
int position = keyboardGrid.getPositionForView(v);
|
||||
if (useOsmandKeyboard) {
|
||||
View focusedView = getDialog().getCurrentFocus();
|
||||
if (focusedView != null && focusedView instanceof EditText) {
|
||||
EditText focusedEditText = (EditText) focusedView;
|
||||
switch (position) {
|
||||
case CLEAR_BUTTON_POSITION:
|
||||
int id = v.getId();
|
||||
switch (id) {
|
||||
case R.id.keyboard_item_clear:
|
||||
focusedEditText.setText("");
|
||||
break;
|
||||
case BACKSPACE_BUTTON_POSITION:
|
||||
case R.id.keyboard_item_backspace:
|
||||
String str = focusedEditText.getText().toString();
|
||||
if (str.length() > 0) {
|
||||
str = str.substring(0, str.length() - 1);
|
||||
|
@ -336,18 +324,32 @@ public class CoordinateInputDialogFragment extends DialogFragment implements Osm
|
|||
switchEditText(focusedEditText.getId(), false);
|
||||
}
|
||||
break;
|
||||
case SWITCH_TO_NEXT_INPUT_BUTTON_POSITION:
|
||||
case R.id.keyboard_item_next_field:
|
||||
switchEditText(focusedEditText.getId(), true);
|
||||
break;
|
||||
default:
|
||||
focusedEditText.setText(focusedEditText.getText().toString() + keyboardAdapter.getItem(position));
|
||||
focusedEditText.setText(focusedEditText.getText().toString() + getItemObjectById(id));
|
||||
focusedEditText.setSelection(focusedEditText.getText().length());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
keyboardGrid.setAdapter(keyboardAdapter);
|
||||
};
|
||||
|
||||
setupKeyboardItems(keyboardView, onClickListener,
|
||||
R.id.keyboard_item_0,
|
||||
R.id.keyboard_item_1,
|
||||
R.id.keyboard_item_2,
|
||||
R.id.keyboard_item_3,
|
||||
R.id.keyboard_item_4,
|
||||
R.id.keyboard_item_5,
|
||||
R.id.keyboard_item_6,
|
||||
R.id.keyboard_item_7,
|
||||
R.id.keyboard_item_8,
|
||||
R.id.keyboard_item_9,
|
||||
R.id.keyboard_item_clear,
|
||||
R.id.keyboard_item_next_field,
|
||||
R.id.keyboard_item_backspace);
|
||||
|
||||
showHideKeyboardIcon.setImageDrawable(getActiveIcon(R.drawable.ic_action_keyboard_hide));
|
||||
showHideKeyboardIcon.setOnClickListener(new View.OnClickListener() {
|
||||
|
@ -363,6 +365,97 @@ public class CoordinateInputDialogFragment extends DialogFragment implements Osm
|
|||
});
|
||||
}
|
||||
|
||||
private void setupKeyboardItems(View keyboardView, View.OnClickListener listener, @IdRes int... itemsIds) {
|
||||
@DrawableRes int itemBg = lightTheme ? R.drawable.keyboard_item_light_bg : R.drawable.keyboard_item_dark_bg;
|
||||
@DrawableRes int controlItemBg = lightTheme ? R.drawable.keyboard_item_control_light_bg : R.drawable.keyboard_item_control_dark_bg;
|
||||
|
||||
ColorStateList clearItemTextColorStateList = AndroidUtils.createColorStateList(getContext(),
|
||||
R.color.keyboard_item_divider_control_color_light, R.color.keyboard_item_divider_control_color_light_pressed);
|
||||
ColorStateList numberColorStateList = AndroidUtils.createColorStateList(getContext(),
|
||||
R.color.keyboard_item_text_color_light, R.color.keyboard_item_text_color_light_pressed);
|
||||
|
||||
@ColorInt int textColorDark = getResolvedColor(R.color.keyboard_item_text_color_dark);
|
||||
|
||||
for (@IdRes int id : itemsIds) {
|
||||
View itemView = keyboardView.findViewById(id);
|
||||
Object item = getItemObjectById(id);
|
||||
final boolean controlItem = id == R.id.keyboard_item_next_field || id == R.id.keyboard_item_backspace;
|
||||
|
||||
itemView.setBackgroundResource(controlItem ? controlItemBg : itemBg);
|
||||
itemView.setOnClickListener(listener);
|
||||
|
||||
View itemTopSpace = itemView.findViewById(R.id.keyboard_item_top_spacing);
|
||||
View itemBottomSpace = itemView.findViewById(R.id.keyboard_item_bottom_spacing);
|
||||
TextView itemTv = (TextView) itemView.findViewById(R.id.keyboard_item_text);
|
||||
ImageView itemIv = (ImageView) itemView.findViewById(R.id.keyboard_item_image);
|
||||
|
||||
if (item instanceof String) {
|
||||
boolean clearItem = id == R.id.keyboard_item_clear;
|
||||
if (clearItem) {
|
||||
TextViewCompat.setAutoSizeTextTypeWithDefaults(itemTv, TextViewCompat.AUTO_SIZE_TEXT_TYPE_NONE);
|
||||
itemTv.setTextSize(TypedValue.COMPLEX_UNIT_PX, getResources().getDimension(R.dimen.default_list_text_size));
|
||||
} else {
|
||||
TextViewCompat.setAutoSizeTextTypeWithDefaults(itemTv, TextViewCompat.AUTO_SIZE_TEXT_TYPE_UNIFORM);
|
||||
}
|
||||
if (lightTheme) {
|
||||
itemTv.setTextColor(clearItem ? clearItemTextColorStateList : numberColorStateList);
|
||||
} else {
|
||||
itemTv.setTextColor(clearItem ? getResolvedColor(R.color.keyboard_item_divider_control_color_dark) : textColorDark);
|
||||
}
|
||||
itemTopSpace.setVisibility(View.VISIBLE);
|
||||
itemTv.setVisibility(View.VISIBLE);
|
||||
itemTv.setText((String) item);
|
||||
itemIv.setVisibility(View.GONE);
|
||||
itemBottomSpace.setVisibility(View.VISIBLE);
|
||||
} else if (item instanceof Integer) {
|
||||
itemTopSpace.setVisibility(View.GONE);
|
||||
itemTv.setVisibility(View.GONE);
|
||||
itemIv.setVisibility(View.VISIBLE);
|
||||
itemBottomSpace.setVisibility(View.GONE);
|
||||
Drawable icon;
|
||||
if (lightTheme) {
|
||||
icon = DrawableCompat.wrap(getResources().getDrawable((Integer) item));
|
||||
DrawableCompat.setTintList(icon, numberColorStateList);
|
||||
} else {
|
||||
icon = getColoredIcon((Integer) item, R.color.keyboard_item_divider_control_color_dark);
|
||||
}
|
||||
itemIv.setImageDrawable(icon);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private Object getItemObjectById(@IdRes int id) {
|
||||
switch (id) {
|
||||
case R.id.keyboard_item_0:
|
||||
return "0";
|
||||
case R.id.keyboard_item_1:
|
||||
return "1";
|
||||
case R.id.keyboard_item_2:
|
||||
return "2";
|
||||
case R.id.keyboard_item_3:
|
||||
return "3";
|
||||
case R.id.keyboard_item_4:
|
||||
return "4";
|
||||
case R.id.keyboard_item_5:
|
||||
return "5";
|
||||
case R.id.keyboard_item_6:
|
||||
return "6";
|
||||
case R.id.keyboard_item_7:
|
||||
return "7";
|
||||
case R.id.keyboard_item_8:
|
||||
return "8";
|
||||
case R.id.keyboard_item_9:
|
||||
return "9";
|
||||
case R.id.keyboard_item_clear:
|
||||
return getString(R.string.shared_string_clear);
|
||||
case R.id.keyboard_item_next_field:
|
||||
return R.drawable.ic_keyboard_next_field;
|
||||
case R.id.keyboard_item_backspace:
|
||||
return R.drawable.ic_keyboard_backspace;
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onResume() {
|
||||
super.onResume();
|
||||
|
@ -710,14 +803,14 @@ public class CoordinateInputDialogFragment extends DialogFragment implements Osm
|
|||
|
||||
private boolean isOsmandKeyboardCurrentlyVisible() {
|
||||
return orientationPortrait
|
||||
? mainView.findViewById(R.id.keyboard_grid_view).getVisibility() == View.VISIBLE
|
||||
? mainView.findViewById(R.id.keyboard_view).getVisibility() == View.VISIBLE
|
||||
: mainView.findViewById(R.id.keyboard_layout).getVisibility() == View.VISIBLE;
|
||||
}
|
||||
|
||||
private void changeOsmandKeyboardVisibility(boolean show) {
|
||||
int visibility = show ? View.VISIBLE : View.GONE;
|
||||
if (orientationPortrait) {
|
||||
mainView.findViewById(R.id.keyboard_grid_view).setVisibility(visibility);
|
||||
mainView.findViewById(R.id.keyboard_view).setVisibility(visibility);
|
||||
mainView.findViewById(R.id.keyboard_divider).setVisibility(visibility);
|
||||
} else {
|
||||
mainView.findViewById(R.id.keyboard_layout).setVisibility(visibility);
|
||||
|
@ -922,117 +1015,6 @@ public class CoordinateInputDialogFragment extends DialogFragment implements Osm
|
|||
}
|
||||
}
|
||||
|
||||
private class KeyboardAdapter extends ArrayAdapter<Object> {
|
||||
|
||||
private final ColorStateList dividerControlColorStateList = AndroidUtils.createColorStateList(getContext(), false,
|
||||
R.color.keyboard_item_divider_control_color_light, R.color.keyboard_item_divider_control_color_light_pressed,
|
||||
0, 0);
|
||||
private final ColorStateList numberColorStateList = AndroidUtils.createColorStateList(getContext(), false,
|
||||
R.color.keyboard_item_text_color_light, R.color.keyboard_item_text_color_light_pressed,
|
||||
0, 0);
|
||||
|
||||
private View.OnClickListener listener;
|
||||
|
||||
public void setListener(View.OnClickListener listener) {
|
||||
this.listener = listener;
|
||||
}
|
||||
|
||||
KeyboardAdapter(@NonNull Context context, @NonNull Object[] objects) {
|
||||
super(context, 0, objects);
|
||||
}
|
||||
|
||||
@NonNull
|
||||
@Override
|
||||
public View getView(int position, @Nullable View convertView, @NonNull ViewGroup parent) {
|
||||
if (convertView == null) {
|
||||
convertView = LayoutInflater.from(getContext()).inflate(R.layout.coordinate_input_keyboard_item, parent, false);
|
||||
}
|
||||
if (!orientationPortrait) {
|
||||
int keyboardViewHeight = mainView.findViewById(R.id.keyboard_grid_view).getMeasuredHeight();
|
||||
int dividerHeight = AndroidUtils.dpToPx(getContext(), 1);
|
||||
int spaceForKeys = keyboardViewHeight - 3 * dividerHeight;
|
||||
convertView.setMinimumHeight(spaceForKeys / 4);
|
||||
}
|
||||
final boolean controlButton = position == CLEAR_BUTTON_POSITION
|
||||
|| position == MINUS_BUTTON_POSITION
|
||||
|| position == BACKSPACE_BUTTON_POSITION
|
||||
|| position == SWITCH_TO_NEXT_INPUT_BUTTON_POSITION;
|
||||
setupNormalState(convertView, controlButton);
|
||||
convertView.setOnTouchListener(new View.OnTouchListener() {
|
||||
@Override
|
||||
public boolean onTouch(View v, MotionEvent event) {
|
||||
int action = event.getAction();
|
||||
if (action == MotionEvent.ACTION_DOWN) {
|
||||
v.setBackgroundColor(getResolvedColor(R.color.keyboard_item_bg_pressed));
|
||||
v.setPressed(true);
|
||||
v.invalidate();
|
||||
} else if (action == MotionEvent.ACTION_UP) {
|
||||
setupNormalState(v, controlButton);
|
||||
if (listener != null) {
|
||||
listener.onClick(v);
|
||||
}
|
||||
} else if (action == MotionEvent.ACTION_CANCEL) {
|
||||
setupNormalState(v, controlButton);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
});
|
||||
View keyboardItemTopSpacing = convertView.findViewById(R.id.keyboard_item_top_spacing);
|
||||
View keyboardItemBottomSpacing = convertView.findViewById(R.id.keyboard_item_bottom_spacing);
|
||||
TextView keyboardItemText = (TextView) convertView.findViewById(R.id.keyboard_item_text);
|
||||
ImageView keyboardItemImage = (ImageView) convertView.findViewById(R.id.keyboard_item_image);
|
||||
Object item = getItem(position);
|
||||
if (item instanceof String) {
|
||||
if (position == CLEAR_BUTTON_POSITION) {
|
||||
TextViewCompat.setAutoSizeTextTypeWithDefaults(keyboardItemText, TextViewCompat.AUTO_SIZE_TEXT_TYPE_NONE);
|
||||
keyboardItemText.setTextSize(TypedValue.COMPLEX_UNIT_PX, getResources().getDimension(R.dimen.default_list_text_size));
|
||||
} else {
|
||||
TextViewCompat.setAutoSizeTextTypeWithDefaults(keyboardItemText, TextViewCompat.AUTO_SIZE_TEXT_TYPE_UNIFORM);
|
||||
}
|
||||
boolean dividerControlButton = position == CLEAR_BUTTON_POSITION
|
||||
|| position == MINUS_BUTTON_POSITION
|
||||
|| position == POINT_BUTTON_POSITION
|
||||
|| position == COLON_BUTTON_POSITION;
|
||||
if (lightTheme) {
|
||||
keyboardItemText.setTextColor(dividerControlButton ? dividerControlColorStateList : numberColorStateList);
|
||||
} else {
|
||||
keyboardItemText.setTextColor(getResolvedColor(dividerControlButton
|
||||
? R.color.keyboard_item_divider_control_color_dark : R.color.keyboard_item_text_color_dark));
|
||||
}
|
||||
keyboardItemImage.setVisibility(View.GONE);
|
||||
keyboardItemTopSpacing.setVisibility(View.VISIBLE);
|
||||
keyboardItemBottomSpacing.setVisibility(View.VISIBLE);
|
||||
keyboardItemText.setVisibility(View.VISIBLE);
|
||||
keyboardItemText.setText((String) getItem(position));
|
||||
} else if (item instanceof Integer) {
|
||||
keyboardItemTopSpacing.setVisibility(View.GONE);
|
||||
keyboardItemBottomSpacing.setVisibility(View.GONE);
|
||||
keyboardItemText.setVisibility(View.GONE);
|
||||
keyboardItemImage.setVisibility(View.VISIBLE);
|
||||
Drawable icon;
|
||||
if (lightTheme) {
|
||||
icon = DrawableCompat.wrap(getResources().getDrawable((Integer) item));
|
||||
DrawableCompat.setTintList(icon, numberColorStateList);
|
||||
} else {
|
||||
icon = getColoredIcon((Integer) item, R.color.keyboard_item_divider_control_color_dark);
|
||||
}
|
||||
keyboardItemImage.setImageDrawable(icon);
|
||||
}
|
||||
|
||||
return convertView;
|
||||
}
|
||||
|
||||
private void setupNormalState(View view, boolean controlButton) {
|
||||
view.setBackgroundColor(
|
||||
controlButton
|
||||
? getResolvedColor(lightTheme ? R.color.keyboard_item_control_light_bg : R.color.keyboard_item_control_dark_bg)
|
||||
: getResolvedColor(lightTheme ? R.color.keyboard_item_light_bg : R.color.keyboard_item_dark_bg)
|
||||
);
|
||||
view.setPressed(false);
|
||||
view.invalidate();
|
||||
}
|
||||
}
|
||||
|
||||
interface OnMapMarkersSavedListener {
|
||||
void onMapMarkersSaved();
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue