aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAidan Follestad <drummer.aidan@gmail.com>2015-12-18 12:30:57 -0600
committerAidan Follestad <drummer.aidan@gmail.com>2015-12-18 12:30:57 -0600
commit47d515cbd2b9daea89d4fa788ea7be1df785bf5b (patch)
tree0445b70242c18ea0cd6f19fe0713b3eeb8b72a40
parent3a6d21385578a9624b104b89b8c154ed03cc7380 (diff)
downloadafollestad-47d515cbd2b9daea89d4fa788ea7be1df785bf5b.tar.gz
Added app:useStockLayout attribute for preferences
-rw-r--r--README.md7
-rw-r--r--commons/src/main/java/com/afollestad/materialdialogs/prefs/MaterialDialogPreference.java2
-rw-r--r--commons/src/main/java/com/afollestad/materialdialogs/prefs/MaterialEditTextPreference.java2
-rw-r--r--commons/src/main/java/com/afollestad/materialdialogs/prefs/MaterialListPreference.java2
-rw-r--r--commons/src/main/java/com/afollestad/materialdialogs/prefs/MaterialMultiSelectListPreference.java2
-rw-r--r--commons/src/main/java/com/afollestad/materialdialogs/prefs/PrefUtil.java17
-rw-r--r--commons/src/main/res/values/attrs.xml8
7 files changed, 34 insertions, 6 deletions
diff --git a/README.md b/README.md
index 93db127..6c18fe4 100644
--- a/README.md
+++ b/README.md
@@ -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