diff --git a/src/main/java/com/todoroo/andlib/utility/AndroidUtilities.java b/src/main/java/com/todoroo/andlib/utility/AndroidUtilities.java
index da3c497f2..02095eb27 100644
--- a/src/main/java/com/todoroo/andlib/utility/AndroidUtilities.java
+++ b/src/main/java/com/todoroo/andlib/utility/AndroidUtilities.java
@@ -11,6 +11,7 @@ import android.content.ContentValues;
import android.content.Context;
import android.os.Build;
import android.text.InputType;
+import android.util.DisplayMetrics;
import android.view.View;
import android.view.inputmethod.InputMethodManager;
import android.widget.TextView;
@@ -203,6 +204,11 @@ public class AndroidUtilities {
}
}
+ public static int convertDpToPixels(DisplayMetrics displayMetrics, int dp) {
+ // developer.android.com/guide/practices/screens_support.html#dips-pels
+ return (int) (dp * displayMetrics.density + 0.5f);
+ }
+
public static boolean preLollipop() {
return !atLeastLollipop();
}
diff --git a/src/main/java/org/tasks/preferences/AppearancePreferences.java b/src/main/java/org/tasks/preferences/AppearancePreferences.java
index c8b7449ba..cba210235 100644
--- a/src/main/java/org/tasks/preferences/AppearancePreferences.java
+++ b/src/main/java/org/tasks/preferences/AppearancePreferences.java
@@ -12,15 +12,21 @@ import org.tasks.R;
import org.tasks.activities.FilterSelectionActivity;
import org.tasks.analytics.Tracker;
import org.tasks.analytics.Tracking;
+import org.tasks.dialogs.SeekBarDialog;
import org.tasks.injection.ActivityComponent;
import org.tasks.injection.InjectingPreferenceActivity;
+import org.tasks.locale.Locale;
import javax.inject.Inject;
-public class AppearancePreferences extends InjectingPreferenceActivity {
+import static org.tasks.dialogs.SeekBarDialog.newSeekBarDialog;
+
+public class AppearancePreferences extends InjectingPreferenceActivity implements SeekBarDialog.SeekBarCallback {
private static final int REQUEST_CUSTOMIZE = 1004;
private static final int REQUEST_DEFAULT_LIST = 1005;
+ private static final int REQUEST_ROW_PADDING = 1006;
+ private static final String FRAG_TAG_ROW_PADDING_SEEKBAR = "frag_tag_row_padding_seekbar";
private static final String EXTRA_BUNDLE = "extra_bundle";
public static final String EXTRA_RESTART = "extra_restart";
@@ -30,6 +36,7 @@ public class AppearancePreferences extends InjectingPreferenceActivity {
@Inject DefaultFilterProvider defaultFilterProvider;
@Inject Tracker tracker;
@Inject Broadcaster broadcaster;
+ @Inject Locale locale;
private Bundle result;
@@ -52,6 +59,12 @@ public class AppearancePreferences extends InjectingPreferenceActivity {
startActivityForResult(new Intent(AppearancePreferences.this, BeastModePreferences.class), REQUEST_CUSTOMIZE);
return true;
});
+ findPreference(R.string.p_rowPadding).setOnPreferenceClickListener(preference -> {
+ newSeekBarDialog(R.layout.dialog_font_size_seekbar, 0, 16, preferences.getRowPadding(), REQUEST_ROW_PADDING)
+ .show(getFragmentManager(), FRAG_TAG_ROW_PADDING_SEEKBAR);
+ return false;
+ });
+ updateRowPadding();
Preference defaultList = findPreference(getString(R.string.p_default_list));
Filter filter = defaultFilterProvider.getDefaultFilter();
defaultList.setSummary(filter.listingTitle);
@@ -108,4 +121,17 @@ public class AppearancePreferences extends InjectingPreferenceActivity {
public void inject(ActivityComponent component) {
component.inject(this);
}
+
+ @Override
+ public void valueSelected(int value, int requestCode) {
+ if (requestCode == REQUEST_ROW_PADDING) {
+ preferences.setInt(R.string.p_rowPadding, value);
+ result.putBoolean(EXTRA_RESTART, true);
+ updateRowPadding();
+ }
+ }
+
+ private void updateRowPadding() {
+ findPreference(R.string.p_rowPadding).setSummary(locale.formatNumber(preferences.getRowPadding()));
+ }
}
diff --git a/src/main/java/org/tasks/preferences/Preferences.java b/src/main/java/org/tasks/preferences/Preferences.java
index 22fcc56e7..6814c5bca 100644
--- a/src/main/java/org/tasks/preferences/Preferences.java
+++ b/src/main/java/org/tasks/preferences/Preferences.java
@@ -149,6 +149,10 @@ public class Preferences {
return getIntegerFromString(R.string.p_default_reminders_mode_key, 0);
}
+ public int getRowPadding() {
+ return getInt(R.string.p_rowPadding, 16);
+ }
+
public int getIntegerFromString(int keyResource, int defaultValue) {
Resources r = context.getResources();
String value = prefs.getString(r.getString(keyResource), null);
diff --git a/src/main/java/org/tasks/tasklist/ViewHolder.java b/src/main/java/org/tasks/tasklist/ViewHolder.java
index 1d60649f9..f250a743e 100644
--- a/src/main/java/org/tasks/tasklist/ViewHolder.java
+++ b/src/main/java/org/tasks/tasklist/ViewHolder.java
@@ -126,7 +126,8 @@ class ViewHolder extends MultiSelectorBindingHolder {
CheckBoxes checkBoxes, TagFormatter tagFormatter,
int textColorOverdue, int textColorSecondary, int textColorHint, TaskDao taskDao,
DialogBuilder dialogBuilder, ViewHolderCallbacks callback,
- DisplayMetrics metrics, int background, int selectedColor, MultiSelector multiSelector) {
+ DisplayMetrics metrics, int background, int selectedColor, MultiSelector multiSelector,
+ int rowPadding) {
super(view, multiSelector);
this.context = context;
this.checkBoxes = checkBoxes;
@@ -150,11 +151,7 @@ class ViewHolder extends MultiSelectorBindingHolder {
nameView.setEllipsize(null);
}
- if (fontSize < 16) {
- // developer.android.com/guide/practices/screens_support.html#dips-pels
- int fontSizeInDP = (int) (fontSize * metrics.density + 0.5f);
- rowBody.setPadding(0, fontSizeInDP, 0, fontSizeInDP);
- }
+ rowBody.setPadding(0, rowPadding, 0, rowPadding);
nameView.setTextSize(fontSize);
int fontSizeDetails = Math.max(10, fontSize - 2);
diff --git a/src/main/java/org/tasks/tasklist/ViewHolderFactory.java b/src/main/java/org/tasks/tasklist/ViewHolderFactory.java
index 49cd621fc..903ee52c3 100644
--- a/src/main/java/org/tasks/tasklist/ViewHolderFactory.java
+++ b/src/main/java/org/tasks/tasklist/ViewHolderFactory.java
@@ -16,6 +16,7 @@ import org.tasks.ui.CheckBoxes;
import javax.inject.Inject;
import static android.support.v4.content.ContextCompat.getColor;
+import static com.todoroo.andlib.utility.AndroidUtilities.convertDpToPixels;
import static org.tasks.preferences.ResourceResolver.getData;
import static org.tasks.preferences.ResourceResolver.getResourceId;
@@ -34,6 +35,7 @@ public class ViewHolderFactory {
private final DisplayMetrics metrics;
private final int background;
private final int selectedColor;
+ private final int rowPadding;
@Inject
public ViewHolderFactory(@ForActivity Context context, Preferences preferences,
@@ -52,11 +54,12 @@ public class ViewHolderFactory {
showFullTaskTitle = preferences.getBoolean(R.string.p_fullTaskTitle, false);
fontSize = preferences.getIntegerFromString(R.string.p_fontSize, 16);
metrics = context.getResources().getDisplayMetrics();
+ rowPadding = convertDpToPixels(metrics, preferences.getInt(R.string.p_rowPadding, 16));
}
ViewHolder newViewHolder(ViewGroup viewGroup, ViewHolder.ViewHolderCallbacks callbacks, MultiSelector multiSelector) {
return new ViewHolder(context, viewGroup, showFullTaskTitle, fontSize, checkBoxes,
tagFormatter, textColorOverdue, textColorSecondary, textColorHint, taskDao,
- dialogBuilder, callbacks, metrics, background, selectedColor, multiSelector);
+ dialogBuilder, callbacks, metrics, background, selectedColor, multiSelector, rowPadding);
}
}
diff --git a/src/main/res/layout/task_adapter_row_body.xml b/src/main/res/layout/task_adapter_row_body.xml
index a22f4ee04..dfe4a8c7b 100644
--- a/src/main/res/layout/task_adapter_row_body.xml
+++ b/src/main/res/layout/task_adapter_row_body.xml
@@ -6,9 +6,7 @@
android:background="?attr/selectableItemBackground"
android:clickable="true"
android:focusable="true"
- android:orientation="vertical"
- android:paddingBottom="16dp"
- android:paddingTop="16dp">
+ android:orientation="vertical">
diff --git a/src/main/res/values/keys.xml b/src/main/res/values/keys.xml
index 8c22c15a1..1ebdfbf20 100644
--- a/src/main/res/values/keys.xml
+++ b/src/main/res/values/keys.xml
@@ -89,6 +89,7 @@
font_size
+ row_padding
voiceRemindersEnabled
diff --git a/src/main/res/xml/preferences_appearance.xml b/src/main/res/xml/preferences_appearance.xml
index 7d41e2652..e19be266a 100644
--- a/src/main/res/xml/preferences_appearance.xml
+++ b/src/main/res/xml/preferences_appearance.xml
@@ -15,6 +15,11 @@
android:key="@string/p_fontSize"
android:title="@string/font_size" />
+
+