diff --git a/contrib/RideLogger/res/layout/activity_dashboard.xml b/contrib/RideLogger/res/layout/activity_dashboard.xml index dfb4751f1..73e23169e 100644 --- a/contrib/RideLogger/res/layout/activity_dashboard.xml +++ b/contrib/RideLogger/res/layout/activity_dashboard.xml @@ -4,11 +4,10 @@ android:id="@+id/LayoutData" android:layout_width="match_parent" android:layout_height="match_parent" - android:columnWidth="150dp" android:numColumns="auto_fit" - android:verticalSpacing="10dp" - android:horizontalSpacing="10dp" + android:verticalSpacing="5dp" + android:horizontalSpacing="5dp" android:padding="5dp" android:stretchMode="columnWidth" - android:gravity="center" + android:gravity="right" /> \ No newline at end of file diff --git a/contrib/RideLogger/src/com/ridelogger/CurrentValuesAdapter.java b/contrib/RideLogger/src/com/ridelogger/CurrentValuesAdapter.java index bcb27adf0..6c4dbdaf4 100644 --- a/contrib/RideLogger/src/com/ridelogger/CurrentValuesAdapter.java +++ b/contrib/RideLogger/src/com/ridelogger/CurrentValuesAdapter.java @@ -3,6 +3,7 @@ package com.ridelogger; import java.util.Set; import android.content.SharedPreferences; +import android.graphics.Rect; import android.graphics.Typeface; import android.preference.PreferenceManager; import android.util.TypedValue; @@ -57,8 +58,10 @@ public class CurrentValuesAdapter extends BaseAdapter { size = Integer.valueOf(sharedPreferences.getString(context.getString(R.string.PREF_TRACKING_SIZE), "20")); for (int key: keys) { valuesTvs[key].setTextSize(TypedValue.COMPLEX_UNIT_SP, size); - keyTvs[key].setTextSize(TypedValue.COMPLEX_UNIT_SP, (int) (size * 0.75)); } + + context.layout.setColumnWidth(getWidth()); + notifyDataSetChanged(); } else if (pkey == context.getString(R.string.PREF_TRACKING_SENSORS)) { Set sensors = sharedPreferences.getStringSet(context.getString(R.string.PREF_TRACKING_SENSORS), null); @@ -69,7 +72,7 @@ public class CurrentValuesAdapter extends BaseAdapter { initRelativeLayout(keys[i]); i++; } - + context.layout.setAdapter(CurrentValuesAdapter.this); } else if (pkey == context.getString(R.string.PREF_TRACKING_IMPERIAL_UNITS)) { imperial = sharedPreferences.getBoolean(pkey, false); @@ -118,7 +121,7 @@ public class CurrentValuesAdapter extends BaseAdapter { ); valueLayoutParams.addRule(RelativeLayout.ALIGN_PARENT_TOP); - valueLayoutParams.addRule(RelativeLayout.ALIGN_PARENT_LEFT); + valueLayoutParams.addRule(RelativeLayout.ALIGN_PARENT_RIGHT); lls[key].addView(valuesTvs[key], valueLayoutParams); @@ -127,27 +130,27 @@ public class CurrentValuesAdapter extends BaseAdapter { RelativeLayout.LayoutParams.WRAP_CONTENT ); + keyLayoutParams.addRule(RelativeLayout.BELOW, valuesTvs[key].getId()); keyLayoutParams.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM); keyLayoutParams.addRule(RelativeLayout.ALIGN_PARENT_RIGHT); lls[key].addView(keyTvs[key], keyLayoutParams); } + public void initValueTv(int key){ valuesTvs[key] = new TextView(context); - valuesTvs[key].setTextAppearance(context, android.R.attr.textAppearanceLarge); valuesTvs[key].setTypeface(null, Typeface.BOLD); valuesTvs[key].setTextSize(TypedValue.COMPLEX_UNIT_SP, size); valuesTvs[key].setText(String.format("%.2f", 0.0)); + valuesTvs[key].setId(key + 1); } public void initKeyTv(int key){ keyTvs[key] = new TextView(context); - - keyTvs[key].setTextSize(TypedValue.COMPLEX_UNIT_SP, (int) (size * 0.55)); - + keyTvs[key].setTextSize(TypedValue.COMPLEX_UNIT_SP, 14); if(!imperial) { keyTvs[key].setText(RideService.KEYS[key].toString().toLowerCase()); @@ -228,4 +231,21 @@ public class CurrentValuesAdapter extends BaseAdapter { notifyDataSetChanged(); } + + /** + * returns the size of the cell basted on 8 chars wide and the configured size param + * @return int + */ + public int getWidth() { + TextView tv = new TextView(context); + tv.setTextAppearance(context, android.R.attr.textAppearanceLarge); + tv.setTypeface(null, Typeface.BOLD); + tv.setTextSize(TypedValue.COMPLEX_UNIT_SP, size); + tv.setText(String.format("%.2f", 1111.11)); + + Rect bounds = new Rect(); + tv.getPaint().getTextBounds("9999.99", 0, "9999.99".length(), bounds); + + return bounds.width(); + } } diff --git a/contrib/RideLogger/src/com/ridelogger/StartActivity.java b/contrib/RideLogger/src/com/ridelogger/StartActivity.java index 6e520f493..b58ebafba 100644 --- a/contrib/RideLogger/src/com/ridelogger/StartActivity.java +++ b/contrib/RideLogger/src/com/ridelogger/StartActivity.java @@ -100,6 +100,7 @@ public class StartActivity extends FragmentActivity layout = (GridView) findViewById(R.id.LayoutData); currentValuesAdapter = new CurrentValuesAdapter(this); layout.setAdapter(currentValuesAdapter); + layout.setColumnWidth(currentValuesAdapter.getWidth()); }