Pārlūkot izejas kodu

Fixed issue with using an EditText as a custom view with wrapInScrollView enabled (padding caused glitches)

Aidan Follestad 10 gadi atpakaļ
vecāks
revīzija
a459c829d4

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

@@ -36,6 +36,7 @@ import android.widget.AdapterView;
 import android.widget.ArrayAdapter;
 import android.widget.Button;
 import android.widget.CheckBox;
+import android.widget.EditText;
 import android.widget.FrameLayout;
 import android.widget.ImageView;
 import android.widget.LinearLayout;
@@ -211,10 +212,17 @@ public class MaterialDialog extends DialogBase implements View.OnClickListener {
                 else
                     paddingBottom = r.getDimensionPixelSize(R.dimen.md_dialog_frame_margin);
 
-                sv.setPadding(0, paddingTop, 0, paddingBottom);
                 sv.setClipToPadding(false);
 
-                innerView.setPadding(framePadding, 0, framePadding, 0);
+                if (innerView instanceof EditText) {
+                    // Setting padding to an EditText causes visual errors, set it to the parent instead
+                    sv.setPadding(framePadding, paddingTop, framePadding, paddingBottom);
+                } else {
+                    // Setting padding to scroll view pushes the scroll bars out, don't do it if not necessary (like above)
+                    sv.setPadding(0, paddingTop, 0, paddingBottom);
+                    innerView.setPadding(framePadding, 0, framePadding, 0);
+                }
+
                 sv.addView(innerView, new ScrollView.LayoutParams(
                         ViewGroup.LayoutParams.MATCH_PARENT,
                         ViewGroup.LayoutParams.WRAP_CONTENT));

+ 10 - 0
sample/src/main/java/com/afollestad/materialdialogssample/MainActivity.java

@@ -15,11 +15,13 @@ import android.text.method.PasswordTransformationMethod;
 import android.view.Menu;
 import android.view.MenuItem;
 import android.view.View;
+import android.view.ViewGroup;
 import android.webkit.WebView;
 import android.widget.AdapterView;
 import android.widget.CheckBox;
 import android.widget.CompoundButton;
 import android.widget.EditText;
+import android.widget.FrameLayout;
 import android.widget.ListView;
 import android.widget.Toast;
 
@@ -194,6 +196,14 @@ public class MainActivity extends ActionBarActivity implements FolderSelectorDia
                 startActivity(new Intent(getApplicationContext(), PreferenceActivity.class));
             }
         });
+
+        EditText view = new EditText(this);
+        view.setLayoutParams(new FrameLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT));
+        new MaterialDialog.Builder(this)
+                .title("Test")
+                .customView(view, true)
+                .positiveText(android.R.string.ok)
+                .show();
     }
 
     private void showBasicNoTitle() {