Преглед на файлове

MDEditText is used by input dialogs to dynamically color it based on widgetColor

Aidan Follestad преди 10 години
родител
ревизия
99417f4a07

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

@@ -22,6 +22,7 @@ import android.widget.ScrollView;
 import android.widget.TextView;
 
 import com.afollestad.materialdialogs.internal.MDButton;
+import com.afollestad.materialdialogs.internal.MDEditText;
 import com.afollestad.materialdialogs.internal.MDProgressBar;
 import com.afollestad.materialdialogs.util.DialogUtils;
 import com.afollestad.materialdialogs.util.TypefaceHelper;
@@ -368,12 +369,13 @@ class DialogInit {
 
     private static void setupInputDialog(final MaterialDialog dialog) {
         final MaterialDialog.Builder builder = dialog.mBuilder;
-        dialog.input = (EditText) dialog.view.findViewById(android.R.id.input);
+        dialog.input = (MDEditText) dialog.view.findViewById(android.R.id.input);
         if (dialog.input == null) return;
         if (builder.inputPrefill != null)
             dialog.input.append(builder.inputPrefill);
         dialog.input.setHint(builder.inputHint);
         dialog.input.setSingleLine();
+        dialog.input.setColorFilter(dialog.mBuilder.widgetColor);
 
         dialog.setOnShowListener(new DialogInterface.OnShowListener() {
             @Override
@@ -422,11 +424,6 @@ class DialogInit {
                 });
             }
         });
-
-        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP)
-            dialog.input.setBackgroundTintList(ColorStateList.valueOf(builder.widgetColor));
-        else if (dialog.input.getBackground() != null)
-            dialog.input.getBackground().setColorFilter(builder.widgetColor, PorterDuff.Mode.SRC_IN);
     }
 
     private static ColorStateList getActionTextStateList(Context context, int newPrimaryColor) {

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

@@ -37,6 +37,7 @@ import android.widget.TextView;
 
 import com.afollestad.materialdialogs.base.DialogBase;
 import com.afollestad.materialdialogs.internal.MDButton;
+import com.afollestad.materialdialogs.internal.MDEditText;
 import com.afollestad.materialdialogs.internal.MDProgressBar;
 import com.afollestad.materialdialogs.internal.MDRootLayout;
 import com.afollestad.materialdialogs.util.DialogUtils;
@@ -64,7 +65,7 @@ public class MaterialDialog extends DialogBase implements
     protected TextView mProgressLabel;
     protected TextView mProgressMinMax;
     protected TextView content;
-    protected EditText input;
+    protected MDEditText input;
 
     protected MDButton positiveButton;
     protected MDButton neutralButton;

+ 40 - 0
library/src/main/java/com/afollestad/materialdialogs/internal/MDEditText.java

@@ -0,0 +1,40 @@
+package com.afollestad.materialdialogs.internal;
+
+import android.annotation.TargetApi;
+import android.content.Context;
+import android.content.res.ColorStateList;
+import android.graphics.PorterDuff;
+import android.os.Build;
+import android.util.AttributeSet;
+import android.widget.EditText;
+
+/**
+ * @author Aidan Follestad (afollestad)
+ */
+public class MDEditText extends EditText {
+
+    public MDEditText(Context context) {
+        super(context);
+    }
+
+    public MDEditText(Context context, AttributeSet attrs) {
+        super(context, attrs);
+    }
+
+    public MDEditText(Context context, AttributeSet attrs, int defStyleAttr) {
+        super(context, attrs, defStyleAttr);
+    }
+
+    @TargetApi(Build.VERSION_CODES.LOLLIPOP)
+    public MDEditText(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
+        super(context, attrs, defStyleAttr, defStyleRes);
+    }
+
+    public void setColorFilter(int color) {
+        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
+            setBackgroundTintList(ColorStateList.valueOf(color));
+        } else {
+            getBackground().setColorFilter(color, PorterDuff.Mode.SRC_IN);
+        }
+    }
+}

+ 1 - 1
library/src/main/res/layout/md_dialog_input.xml

@@ -30,7 +30,7 @@
             android:layout_gravity="center_horizontal"
             tools:ignore="UnusedAttribute" />
 
-        <EditText
+        <com.afollestad.materialdialogs.internal.MDEditText
             android:id="@android:id/input"
             android:layout_width="match_parent"
             android:layout_height="wrap_content"