diff --git a/MyTracks/res/layout/track_edit.xml b/MyTracks/res/layout/track_edit.xml
index ad5dad6e9..b179b81dd 100644
--- a/MyTracks/res/layout/track_edit.xml
+++ b/MyTracks/res/layout/track_edit.xml
@@ -41,20 +41,20 @@ limitations under the License.
android:layout_width="match_parent"
android:orientation="horizontal" >
-
+ android:layout_width="wrap_content" />
parent, View view, int position, long id) {
setActivityTypeIcon(TrackIconUtils.getIconValue(
TrackEditActivity.this, (String) activityType.getAdapter().getItem(position)));
}
});
activityType.setOnFocusChangeListener(new View.OnFocusChangeListener() {
- @Override
+ @Override
public void onFocusChange(View v, boolean hasFocus) {
if (!hasFocus) {
setActivityTypeIcon(TrackIconUtils.getIconValue(
@@ -104,15 +109,6 @@ public class TrackEditActivity extends AbstractMyTracksActivity
}
});
- activityTypeIcon = (ImageButton) findViewById(R.id.track_edit_activity_type_icon);
- activityTypeIcon.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- new ChooseActivityTypeDialogFragment().show(getSupportFragmentManager(),
- ChooseActivityTypeDialogFragment.CHOOSE_ACTIVITY_TYPE_DIALOG_TAG);
- }
- });
-
iconValue = null;
if (bundle != null) {
iconValue = bundle.getString(ICON_VALUE_KEY);
@@ -120,14 +116,64 @@ public class TrackEditActivity extends AbstractMyTracksActivity
if (iconValue == null) {
iconValue = track.getIcon();
}
- setActivityTypeIcon(iconValue);
+
+ // Add a border around the icon
+ Options options = new BitmapFactory.Options();
+ options.inJustDecodeBounds = true;
+ BitmapFactory.decodeResource(getResources(), R.drawable.track_airplane, options);
+ final int padding = 4;
+ final int width = options.outWidth + 2 * padding;
+ final int height = options.outHeight + 2 * padding;
+
+ activityTypeIcon = (Spinner) findViewById(R.id.track_edit_activity_type_icon);
+ ArrayAdapter activityTypeIconAdapter = new ArrayAdapter(
+ this, android.R.layout.simple_spinner_item,
+ new StringBuilder[] {new StringBuilder(iconValue)}) {
+ @Override
+ public View getView(int position, View convertView, android.view.ViewGroup parent) {
+ ImageView imageView;
+ if (convertView != null) {
+ imageView = (ImageView) convertView;
+ } else {
+ imageView = new ImageView(getContext());
+ }
+ imageView.setImageResource(TrackIconUtils.getIconDrawable(getItem(position).toString()));
+ imageView.setMinimumHeight(height);
+ imageView.setMinimumWidth(width);
+ imageView.setPadding(padding, padding, padding, padding);
+ return imageView;
+ }
+ };
+ activityTypeIcon.setAdapter(activityTypeIconAdapter);
+ activityTypeIcon.setOnTouchListener(new View.OnTouchListener() {
+ @Override
+ public boolean onTouch(View v, MotionEvent event) {
+ if (event.getAction() == MotionEvent.ACTION_UP) {
+ new ChooseActivityTypeDialogFragment().show(getSupportFragmentManager(),
+ ChooseActivityTypeDialogFragment.CHOOSE_ACTIVITY_TYPE_DIALOG_TAG);
+ }
+ return true;
+ }
+ });
+ activityTypeIcon.setOnKeyListener(new View.OnKeyListener() {
+ @Override
+ public boolean onKey(View v, int keyCode, KeyEvent event) {
+ if (keyCode == KeyEvent.KEYCODE_DPAD_CENTER) {
+ new ChooseActivityTypeDialogFragment().show(getSupportFragmentManager(),
+ ChooseActivityTypeDialogFragment.CHOOSE_ACTIVITY_TYPE_DIALOG_TAG);
+ return true;
+ } else {
+ return false;
+ }
+ }
+ });
description = (EditText) findViewById(R.id.track_edit_description);
description.setText(track.getDescription());
Button save = (Button) findViewById(R.id.track_edit_save);
save.setOnClickListener(new View.OnClickListener() {
- @Override
+ @Override
public void onClick(View v) {
track.setName(name.getText().toString());
String category = activityType.getText().toString();
@@ -152,7 +198,7 @@ public class TrackEditActivity extends AbstractMyTracksActivity
} else {
setTitle(R.string.menu_edit);
cancel.setOnClickListener(new View.OnClickListener() {
- @Override
+ @Override
public void onClick(View v) {
finish();
}
@@ -174,12 +220,17 @@ public class TrackEditActivity extends AbstractMyTracksActivity
/**
* Sets the activity type icon.
- *
+ *
* @param value the icon value
*/
private void setActivityTypeIcon(String value) {
iconValue = value;
- activityTypeIcon.setImageResource(TrackIconUtils.getIconDrawable(value));
+ ArrayAdapter adapter =
+ (ArrayAdapter) activityTypeIcon.getAdapter();
+ StringBuilder stringBuilder = adapter.getItem(0);
+ stringBuilder.delete(0, stringBuilder.length());
+ stringBuilder.append(value);
+ adapter.notifyDataSetChanged();
}
@Override