diff --git a/app/src/main/java/org/tasks/preferences/fragments/ScrollableWidget.kt b/app/src/main/java/org/tasks/preferences/fragments/ScrollableWidget.kt
index e9ea4df21..f2fe9eff4 100644
--- a/app/src/main/java/org/tasks/preferences/fragments/ScrollableWidget.kt
+++ b/app/src/main/java/org/tasks/preferences/fragments/ScrollableWidget.kt
@@ -65,6 +65,7 @@ class ScrollableWidget : InjectingPreferenceFragment() {
setupCheckbox(R.string.p_widget_show_due_date)
setupCheckbox(R.string.p_widget_show_checkboxes)
setupCheckbox(R.string.p_widget_due_date_underneath)
+ setupCheckbox(R.string.p_widget_show_full_task_title)
setupList(R.string.p_widget_spacing)
val showHeader = setupCheckbox(R.string.p_widget_show_header)
val showSettings = setupCheckbox(R.string.p_widget_show_settings)
diff --git a/app/src/main/java/org/tasks/widget/ScrollableViewsFactory.java b/app/src/main/java/org/tasks/widget/ScrollableViewsFactory.java
index f7d01c0ba..0af64d2d2 100644
--- a/app/src/main/java/org/tasks/widget/ScrollableViewsFactory.java
+++ b/app/src/main/java/org/tasks/widget/ScrollableViewsFactory.java
@@ -160,6 +160,11 @@ class ScrollableViewsFactory implements RemoteViewsService.RemoteViewsFactory {
}
}
+ row.setInt(
+ R.id.widget_text,
+ "setMaxLines",
+ widgetPreferences.showFullTaskTitle() ? Integer.MAX_VALUE : 1);
+
row.setTextViewText(R.id.widget_text, textContent);
row.setTextColor(R.id.widget_text, textColorTitle);
row.setImageViewBitmap(R.id.widget_complete_box, getCheckbox(task));
@@ -171,7 +176,10 @@ class ScrollableViewsFactory implements RemoteViewsService.RemoteViewsFactory {
int horizontalPadding = (int) context.getResources().getDimension(R.dimen.widget_padding);
int verticalPadding = widgetPreferences.getWidgetSpacing();
- int textBottomPadding = showDueDates && task.hasDueDate() ? 0 : verticalPadding;
+ int textBottomPadding =
+ showDueDates && task.hasDueDate() && widgetPreferences.dueDateBelowTitle()
+ ? 0
+ : verticalPadding;
row.setViewPadding(R.id.widget_complete_box, horizontalPadding, verticalPadding, horizontalPadding, verticalPadding);
if (showCheckboxes) {
row.setViewVisibility(R.id.widget_complete_box, View.VISIBLE);
diff --git a/app/src/main/java/org/tasks/widget/WidgetPreferences.java b/app/src/main/java/org/tasks/widget/WidgetPreferences.java
index f2fe878af..fa426c539 100644
--- a/app/src/main/java/org/tasks/widget/WidgetPreferences.java
+++ b/app/src/main/java/org/tasks/widget/WidgetPreferences.java
@@ -38,6 +38,10 @@ public class WidgetPreferences {
return preferences.getBoolean(getKey(R.string.p_widget_show_menu), true);
}
+ boolean showFullTaskTitle() {
+ return preferences.getBoolean(getKey(R.string.p_widget_show_full_task_title), false);
+ }
+
boolean dueDateBelowTitle() {
return preferences.getBoolean(getKey(R.string.p_widget_due_date_underneath), false);
}
diff --git a/app/src/main/res/layout/widget_row.xml b/app/src/main/res/layout/widget_row.xml
index da3f08ae8..4a43806d5 100644
--- a/app/src/main/res/layout/widget_row.xml
+++ b/app/src/main/res/layout/widget_row.xml
@@ -44,7 +44,7 @@
android:paddingEnd="@dimen/widget_padding"
android:paddingStart="0dp"
android:gravity="start|center_vertical"
- android:singleLine="true"
+ android:maxLines="1"
android:textAlignment="viewStart"
android:textSize="16sp"
tools:text="Task title"/>
diff --git a/app/src/main/res/values/keys.xml b/app/src/main/res/values/keys.xml
index d28a976a2..59ad87b9f 100644
--- a/app/src/main/res/values/keys.xml
+++ b/app/src/main/res/values/keys.xml
@@ -269,6 +269,7 @@
widget-opacity-v3-
widget-font-size-
widget-show-due-date-
+ widget-show-full-task-title-
widget-show-checkboxes-
widget-show-header-
widget-show-settings-
diff --git a/app/src/main/res/xml/preferences_widget.xml b/app/src/main/res/xml/preferences_widget.xml
index dcb3887e0..7c2b2b664 100644
--- a/app/src/main/res/xml/preferences_widget.xml
+++ b/app/src/main/res/xml/preferences_widget.xml
@@ -49,6 +49,11 @@
app:min="10"
app:showSeekBarValue="true" />
+
+