diff options
author | Aidan Follestad <drummer.aidan@gmail.com> | 2015-12-18 12:30:57 -0600 |
---|---|---|
committer | Aidan Follestad <drummer.aidan@gmail.com> | 2015-12-18 12:30:57 -0600 |
commit | 47d515cbd2b9daea89d4fa788ea7be1df785bf5b (patch) | |
tree | 0445b70242c18ea0cd6f19fe0713b3eeb8b72a40 | |
parent | 3a6d21385578a9624b104b89b8c154ed03cc7380 (diff) | |
download | afollestad-47d515cbd2b9daea89d4fa788ea7be1df785bf5b.tar.gz |
Added app:useStockLayout attribute for preferences
7 files changed, 34 insertions, 6 deletions
@@ -1205,6 +1205,13 @@ with user input that's received through typing or selection. Material Dialogs in `MaterialListPreference`, and `MaterialMultiSelectListPreference` classes that can be used in your preferences XML to automatically use Material-themed dialogs. See the sample project for details. +By default, all of these preference classes will set their layout to `R.layout.md_preference_custom`. If you +don't want a default layout to be set, you can provide an attribute on the preferences in your XML: + +``` +app:useStockLayout="true" +``` + --- # File Selector Dialogs diff --git a/commons/src/main/java/com/afollestad/materialdialogs/prefs/MaterialDialogPreference.java b/commons/src/main/java/com/afollestad/materialdialogs/prefs/MaterialDialogPreference.java index 0f16419..c632dd5 100644 --- a/commons/src/main/java/com/afollestad/materialdialogs/prefs/MaterialDialogPreference.java +++ b/commons/src/main/java/com/afollestad/materialdialogs/prefs/MaterialDialogPreference.java @@ -49,7 +49,7 @@ public class MaterialDialogPreference extends DialogPreference { private void init(Context context, AttributeSet attrs) { this.context = context; - PrefUtil.setLayoutResource(this, attrs); + PrefUtil.setLayoutResource(context, this, attrs); } @Override diff --git a/commons/src/main/java/com/afollestad/materialdialogs/prefs/MaterialEditTextPreference.java b/commons/src/main/java/com/afollestad/materialdialogs/prefs/MaterialEditTextPreference.java index ff65213..49cc31c 100644 --- a/commons/src/main/java/com/afollestad/materialdialogs/prefs/MaterialEditTextPreference.java +++ b/commons/src/main/java/com/afollestad/materialdialogs/prefs/MaterialEditTextPreference.java @@ -66,7 +66,7 @@ public class MaterialEditTextPreference extends EditTextPreference { private void init(Context context, AttributeSet attrs) { - PrefUtil.setLayoutResource(this, attrs); + PrefUtil.setLayoutResource(context, this, attrs); int fallback; if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) fallback = DialogUtils.resolveColor(context, android.R.attr.colorAccent); diff --git a/commons/src/main/java/com/afollestad/materialdialogs/prefs/MaterialListPreference.java b/commons/src/main/java/com/afollestad/materialdialogs/prefs/MaterialListPreference.java index 1d4f88b..88873ed 100644 --- a/commons/src/main/java/com/afollestad/materialdialogs/prefs/MaterialListPreference.java +++ b/commons/src/main/java/com/afollestad/materialdialogs/prefs/MaterialListPreference.java @@ -55,7 +55,7 @@ public class MaterialListPreference extends ListPreference { private void init(Context context, AttributeSet attrs) { this.context = context; - PrefUtil.setLayoutResource(this, attrs); + PrefUtil.setLayoutResource(context, this, attrs); if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.GINGERBREAD_MR1) setWidgetLayoutResource(0); } diff --git a/commons/src/main/java/com/afollestad/materialdialogs/prefs/MaterialMultiSelectListPreference.java b/commons/src/main/java/com/afollestad/materialdialogs/prefs/MaterialMultiSelectListPreference.java index d74384f..2a56737 100644 --- a/commons/src/main/java/com/afollestad/materialdialogs/prefs/MaterialMultiSelectListPreference.java +++ b/commons/src/main/java/com/afollestad/materialdialogs/prefs/MaterialMultiSelectListPreference.java @@ -63,7 +63,7 @@ public class MaterialMultiSelectListPreference extends MultiSelectListPreference private void init(Context context, AttributeSet attrs) { this.context = context; - PrefUtil.setLayoutResource(this, attrs); + PrefUtil.setLayoutResource(context, this, attrs); if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.GINGERBREAD_MR1) setWidgetLayoutResource(0); } diff --git a/commons/src/main/java/com/afollestad/materialdialogs/prefs/PrefUtil.java b/commons/src/main/java/com/afollestad/materialdialogs/prefs/PrefUtil.java index c636c17..43c4a91 100644 --- a/commons/src/main/java/com/afollestad/materialdialogs/prefs/PrefUtil.java +++ b/commons/src/main/java/com/afollestad/materialdialogs/prefs/PrefUtil.java @@ -1,5 +1,7 @@ package com.afollestad.materialdialogs.prefs; +import android.content.Context; +import android.content.res.TypedArray; import android.content.res.XmlResourceParser; import android.preference.Preference; import android.preference.PreferenceManager; @@ -19,7 +21,7 @@ class PrefUtil { private PrefUtil() { } - public static void setLayoutResource(@NonNull Preference preference, @Nullable AttributeSet attrs) { + public static void setLayoutResource(@NonNull Context context, @NonNull Preference preference, @Nullable AttributeSet attrs) { boolean foundLayout = false; if (attrs != null) { for (int i = 0; i < attrs.getAttributeCount(); i++) { @@ -31,7 +33,18 @@ class PrefUtil { } } } - if (!foundLayout) + + boolean useStockLayout = false; + if (attrs != null) { + TypedArray a = context.getTheme().obtainStyledAttributes(attrs, R.styleable.Preference, 0, 0); + try { + useStockLayout = a.getBoolean(R.styleable.Preference_useStockLayout, false); + } finally { + a.recycle(); + } + } + + if (!foundLayout && !useStockLayout) preference.setLayoutResource(R.layout.md_preference_custom); } diff --git a/commons/src/main/res/values/attrs.xml b/commons/src/main/res/values/attrs.xml new file mode 100644 index 0000000..3ff1761 --- /dev/null +++ b/commons/src/main/res/values/attrs.xml @@ -0,0 +1,8 @@ +<?xml version="1.0" encoding="utf-8"?> +<resources> + + <declare-styleable name="Preference"> + <attr name="useStockLayout" format="boolean" /> + </declare-styleable> + +</resources>
\ No newline at end of file |