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
This commit is contained in:
seannemann21 2018-07-23 01:50:46 -04:00 committed by neslihanturan
parent 5cfe709281
commit 1bf5dda4b2
6 changed files with 190 additions and 13 deletions

View file

@ -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);
}
}
}

View file

@ -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);
}
}
}

View file

@ -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);
}
}
}

View file

@ -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);
}
}
}

View file

@ -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);
}
}
}

View file

@ -2,58 +2,58 @@
<PreferenceScreen
xmlns:android="http://schemas.android.com/apk/res/android">
<PreferenceCategory
<fr.free.nrw.commons.ui.LongTitlePreferences.LongTitlePreferenceCategory
android:title="@string/preference_category_appearance">
<SwitchPreference
<fr.free.nrw.commons.ui.LongTitlePreferences.LongTitleSwitchPreference
android:title="@string/preference_theme"
android:defaultValue="false"
android:summary="@string/preference_theme_summary"
android:key="theme" />
</PreferenceCategory>
</fr.free.nrw.commons.ui.LongTitlePreferences.LongTitlePreferenceCategory>
<PreferenceCategory
<fr.free.nrw.commons.ui.LongTitlePreferences.LongTitlePreferenceCategory
android:title="@string/preference_category_general">
<ListPreference
<fr.free.nrw.commons.ui.LongTitlePreferences.LongTitleListPreference
android:key="defaultLicense"
android:title="@string/preference_license"
android:entries="@array/pref_defaultLicense_entries"
android:entryValues="@array/pref_defaultLicense_values"
android:defaultValue="@string/license_pref_cc_by_sa_4_0" />
<SwitchPreference
<fr.free.nrw.commons.ui.LongTitlePreferences.LongTitleSwitchPreference
android:key="useExternalStorage"
android:title="@string/use_external_storage"
android:defaultValue="true"
android:summary="@string/use_external_storage_summary" />
<EditTextPreference
<fr.free.nrw.commons.ui.LongTitlePreferences.LongTitleEditTextPreference
android:key="uploads"
android:defaultValue="100"
android:title= "@string/set_limit"
android:inputType="numberDecimal"
android:maxLength="3" />
</PreferenceCategory>
</fr.free.nrw.commons.ui.LongTitlePreferences.LongTitlePreferenceCategory>
<!-- The key 'allowGps' was used before and has since been removed based on the discussion at #1599.
Do not reuse this key unless you revive the same feature with the changes mentioned at #1599.-->
<PreferenceCategory
<fr.free.nrw.commons.ui.LongTitlePreferences.LongTitlePreferenceCategory
android:title="@string/preference_category_feedback">
<Preference
<fr.free.nrw.commons.ui.LongTitlePreferences.LongTitlePreference
android:key="becomeBetaTester"
android:title="@string/become_a_tester_title"
android:summary="@string/become_a_tester_description">
</Preference>
</fr.free.nrw.commons.ui.LongTitlePreferences.LongTitlePreference>
<Preference
<fr.free.nrw.commons.ui.LongTitlePreferences.LongTitlePreference
android:key="sendLogFile"
android:title="@string/send_log_file"
android:summary="@string/send_log_file_description"/>
</PreferenceCategory>
</fr.free.nrw.commons.ui.LongTitlePreferences.LongTitlePreferenceCategory>
</PreferenceScreen>