Kaynağa Gözat

More theming fixes (hopefully)

Aidan Follestad 10 yıl önce
ebeveyn
işleme
e109a67d0a

+ 3 - 2
library/src/main/java/com/afollestad/materialdialogs/DialogInit.java

@@ -8,6 +8,7 @@ import android.graphics.Color;
 import android.graphics.drawable.Drawable;
 import android.os.Build;
 import android.text.method.LinkMovementMethod;
+import android.view.ContextThemeWrapper;
 import android.view.View;
 import android.view.ViewGroup;
 import android.view.inputmethod.InputMethodManager;
@@ -35,13 +36,13 @@ import java.util.Arrays;
  */
 class DialogInit {
 
-    public static int getTheme(MaterialDialog.Builder builder) {
+    public static ContextThemeWrapper getTheme(MaterialDialog.Builder builder) {
         boolean darkTheme = builder.theme == Theme.DARK;
         if (!darkTheme) {
             darkTheme = DialogUtils.resolveBoolean(builder.context, R.attr.md_dark_theme, false);
             builder.theme = darkTheme ? Theme.DARK : Theme.LIGHT;
         }
-        return darkTheme ? R.style.MD_Dark : R.style.MD_Light;
+        return new ContextThemeWrapper(builder.context, darkTheme ? R.style.MD_Dark : R.style.MD_Light);
     }
 
     public static int getInflateLayout(MaterialDialog.Builder builder) {

+ 4 - 2
library/src/main/java/com/afollestad/materialdialogs/MaterialDialog.java

@@ -20,6 +20,7 @@ import android.support.annotation.StringRes;
 import android.support.v4.content.res.ResourcesCompat;
 import android.text.TextUtils;
 import android.util.Log;
+import android.view.ContextThemeWrapper;
 import android.view.LayoutInflater;
 import android.view.View;
 import android.view.ViewTreeObserver;
@@ -76,9 +77,10 @@ public class MaterialDialog extends DialogBase implements
 
     @SuppressLint("InflateParams")
     protected MaterialDialog(Builder builder) {
-        super(builder.context, DialogInit.getTheme(builder));
+        super(builder.context);
         mBuilder = builder;
-        final LayoutInflater inflater = LayoutInflater.from(mBuilder.context);
+        final ContextThemeWrapper themedContext = DialogInit.getTheme(builder);
+        final LayoutInflater inflater = LayoutInflater.from(themedContext);
         view = (MDRootLayout) inflater.inflate(DialogInit.getInflateLayout(builder), null);
         DialogInit.init(this);
     }

+ 2 - 2
library/src/main/java/com/afollestad/materialdialogs/base/DialogBase.java

@@ -13,8 +13,8 @@ import android.view.ViewGroup;
 public class DialogBase extends AlertDialog implements DialogInterface.OnShowListener {
     private OnShowListener mShowListener;
 
-    protected DialogBase(Context context, int theme) {
-        super(context, theme);
+    protected DialogBase(Context context) {
+        super(context);
     }
 
     protected void setVerticalMargins(View view, int topMargin, int bottomMargin) {