From 1bf5dda4b2688eb26864aa9ee37cfee3610b2c3a Mon Sep 17 00:00:00 2001 From: seannemann21 <32438079+seannemann21@users.noreply.github.com> Date: Mon, 23 Jul 2018 01:50:46 -0400 Subject: [PATCH] Allow for settings titles to expand across multiple lines instead of being truncated (#1671) * Added preference classes that allow for titles with multiple lines for settings with long titles * Added null checks to ensure the title TextView isn't null --- .../LongTitleEditTextPreference.java | 37 +++++++++++++++++++ .../LongTitleListPreference.java | 32 ++++++++++++++++ .../LongTitlePreference.java | 36 ++++++++++++++++++ .../LongTitlePreferenceCategory.java | 36 ++++++++++++++++++ .../LongTitleSwitchPreference.java | 36 ++++++++++++++++++ app/src/main/res/xml/preferences.xml | 26 ++++++------- 6 files changed, 190 insertions(+), 13 deletions(-) create mode 100644 app/src/main/java/fr/free/nrw/commons/ui/LongTitlePreferences/LongTitleEditTextPreference.java create mode 100644 app/src/main/java/fr/free/nrw/commons/ui/LongTitlePreferences/LongTitleListPreference.java create mode 100644 app/src/main/java/fr/free/nrw/commons/ui/LongTitlePreferences/LongTitlePreference.java create mode 100644 app/src/main/java/fr/free/nrw/commons/ui/LongTitlePreferences/LongTitlePreferenceCategory.java create mode 100644 app/src/main/java/fr/free/nrw/commons/ui/LongTitlePreferences/LongTitleSwitchPreference.java diff --git a/app/src/main/java/fr/free/nrw/commons/ui/LongTitlePreferences/LongTitleEditTextPreference.java b/app/src/main/java/fr/free/nrw/commons/ui/LongTitlePreferences/LongTitleEditTextPreference.java new file mode 100644 index 000000000..758168d1c --- /dev/null +++ b/app/src/main/java/fr/free/nrw/commons/ui/LongTitlePreferences/LongTitleEditTextPreference.java @@ -0,0 +1,37 @@ +package fr.free.nrw.commons.ui.LongTitlePreferences; + +import android.content.Context; +import android.preference.EditTextPreference; +import android.util.AttributeSet; +import android.view.View; +import android.widget.TextView; + +/** + * Created by seannemann on 6/27/2018. + */ + +public class LongTitleEditTextPreference extends EditTextPreference { + public LongTitleEditTextPreference(Context context, AttributeSet attrs, int defStyleAttr) { + super(context, attrs, defStyleAttr); + } + + public LongTitleEditTextPreference(Context context, AttributeSet attrs) { + super(context, attrs); + } + + public LongTitleEditTextPreference(Context context) { + + super(context); + } + + @Override + protected void onBindView(View view) + { + super.onBindView(view); + + TextView title= view.findViewById(android.R.id.title); + if (title != null) { + title.setSingleLine(false); + } + } +} diff --git a/app/src/main/java/fr/free/nrw/commons/ui/LongTitlePreferences/LongTitleListPreference.java b/app/src/main/java/fr/free/nrw/commons/ui/LongTitlePreferences/LongTitleListPreference.java new file mode 100644 index 000000000..24b97d095 --- /dev/null +++ b/app/src/main/java/fr/free/nrw/commons/ui/LongTitlePreferences/LongTitleListPreference.java @@ -0,0 +1,32 @@ +package fr.free.nrw.commons.ui.LongTitlePreferences; + +import android.content.Context; +import android.preference.ListPreference; +import android.util.AttributeSet; +import android.view.View; +import android.widget.TextView; + +/** + * Created by seannemann on 6/27/2018. + */ + +public class LongTitleListPreference extends ListPreference { + public LongTitleListPreference(Context context, AttributeSet attrs) { + super(context, attrs); + } + + public LongTitleListPreference(Context context) { + super(context); + } + + @Override + protected void onBindView(View view) + { + super.onBindView(view); + + TextView title= view.findViewById(android.R.id.title); + if (title != null) { + title.setSingleLine(false); + } + } +} diff --git a/app/src/main/java/fr/free/nrw/commons/ui/LongTitlePreferences/LongTitlePreference.java b/app/src/main/java/fr/free/nrw/commons/ui/LongTitlePreferences/LongTitlePreference.java new file mode 100644 index 000000000..0facf0889 --- /dev/null +++ b/app/src/main/java/fr/free/nrw/commons/ui/LongTitlePreferences/LongTitlePreference.java @@ -0,0 +1,36 @@ +package fr.free.nrw.commons.ui.LongTitlePreferences; + +import android.content.Context; +import android.preference.Preference; +import android.util.AttributeSet; +import android.view.View; +import android.widget.TextView; + +/** + * Created by seannemann on 6/27/2018. + */ + +public class LongTitlePreference extends Preference { + public LongTitlePreference(Context context, AttributeSet attrs, int defStyleAttr) { + super(context, attrs, defStyleAttr); + } + + public LongTitlePreference(Context context, AttributeSet attrs) { + super(context, attrs); + } + + public LongTitlePreference(Context context) { + super(context); + } + + @Override + protected void onBindView(View view) + { + super.onBindView(view); + + TextView title= view.findViewById(android.R.id.title); + if (title != null) { + title.setSingleLine(false); + } + } +} diff --git a/app/src/main/java/fr/free/nrw/commons/ui/LongTitlePreferences/LongTitlePreferenceCategory.java b/app/src/main/java/fr/free/nrw/commons/ui/LongTitlePreferences/LongTitlePreferenceCategory.java new file mode 100644 index 000000000..7ba8a1c18 --- /dev/null +++ b/app/src/main/java/fr/free/nrw/commons/ui/LongTitlePreferences/LongTitlePreferenceCategory.java @@ -0,0 +1,36 @@ +package fr.free.nrw.commons.ui.LongTitlePreferences; + +import android.content.Context; +import android.preference.PreferenceCategory; +import android.util.AttributeSet; +import android.view.View; +import android.widget.TextView; + +/** + * Created by seannemann on 6/27/2018. + */ + +public class LongTitlePreferenceCategory extends PreferenceCategory { + public LongTitlePreferenceCategory(Context context, AttributeSet attrs, int defStyleAttr) { + super(context, attrs, defStyleAttr); + } + + public LongTitlePreferenceCategory(Context context, AttributeSet attrs) { + super(context, attrs); + } + + public LongTitlePreferenceCategory(Context context) { + super(context); + } + + @Override + protected void onBindView(View view) + { + super.onBindView(view); + + TextView title= view.findViewById(android.R.id.title); + if (title != null) { + title.setSingleLine(false); + } + } +} diff --git a/app/src/main/java/fr/free/nrw/commons/ui/LongTitlePreferences/LongTitleSwitchPreference.java b/app/src/main/java/fr/free/nrw/commons/ui/LongTitlePreferences/LongTitleSwitchPreference.java new file mode 100644 index 000000000..5614e93e9 --- /dev/null +++ b/app/src/main/java/fr/free/nrw/commons/ui/LongTitlePreferences/LongTitleSwitchPreference.java @@ -0,0 +1,36 @@ +package fr.free.nrw.commons.ui.LongTitlePreferences; + +import android.content.Context; +import android.preference.SwitchPreference; +import android.util.AttributeSet; +import android.view.View; +import android.widget.TextView; + +/** + * Created by seannemann on 6/27/2018. + */ + +public class LongTitleSwitchPreference extends SwitchPreference { + public LongTitleSwitchPreference(Context context, AttributeSet attrs, int defStyleAttr) { + super(context, attrs, defStyleAttr); + } + + public LongTitleSwitchPreference(Context context, AttributeSet attrs) { + super(context, attrs); + } + + public LongTitleSwitchPreference(Context context) { + super(context); + } + + @Override + protected void onBindView(View view) + { + super.onBindView(view); + + TextView title= view.findViewById(android.R.id.title); + if (title != null) { + title.setSingleLine(false); + } + } +} diff --git a/app/src/main/res/xml/preferences.xml b/app/src/main/res/xml/preferences.xml index 8fc5524a2..37b6a8b01 100644 --- a/app/src/main/res/xml/preferences.xml +++ b/app/src/main/res/xml/preferences.xml @@ -2,58 +2,58 @@ - - - + - - - - - + - - - + - - + \ No newline at end of file