Browse Source

dialog.findViewById() is now a proxy to dialog.getView().findViewById(). Removed extra top/bottom spacing when using a custom view dialog that has no title and/or action buttons. Resolves #543.

Aidan Follestad 10 years ago
parent
commit
cb13f55191

+ 8 - 0
library/src/main/java/com/afollestad/materialdialogs/DialogBase.java

@@ -5,17 +5,25 @@ import android.content.Context;
 import android.content.DialogInterface;
 import android.view.View;
 
+import com.afollestad.materialdialogs.internal.MDRootLayout;
+
 /**
  * @author Aidan Follestad (afollestad)
  */
 class DialogBase extends Dialog implements DialogInterface.OnShowListener {
 
+    protected MDRootLayout view;
     private OnShowListener mShowListener;
 
     protected DialogBase(Context context, int theme) {
         super(context, theme);
     }
 
+    @Override
+    public View findViewById(int id) {
+        return view.findViewById(id);
+    }
+
     @Override
     public final void setOnShowListener(OnShowListener listener) {
         mShowListener = listener;

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

@@ -20,6 +20,7 @@ import android.widget.ScrollView;
 import android.widget.TextView;
 
 import com.afollestad.materialdialogs.internal.MDButton;
+import com.afollestad.materialdialogs.internal.MDRootLayout;
 import com.afollestad.materialdialogs.internal.MDTintHelper;
 import com.afollestad.materialdialogs.simplelist.MaterialSimpleListAdapter;
 import com.afollestad.materialdialogs.util.DialogUtils;
@@ -274,6 +275,7 @@ class DialogInit {
 
         // Setup custom views
         if (builder.customView != null) {
+            ((MDRootLayout) dialog.view.findViewById(R.id.root)).noTitleNoPadding();
             FrameLayout frame = (FrameLayout) dialog.view.findViewById(R.id.customViewFrame);
             dialog.customViewFrame = frame;
             View innerView = builder.customView;

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

@@ -54,7 +54,6 @@ import java.util.List;
 public class MaterialDialog extends DialogBase implements
         View.OnClickListener, AdapterView.OnItemClickListener {
 
-    protected final MDRootLayout view;
     protected final Builder mBuilder;
     protected ListView listView;
     protected ImageView icon;

+ 7 - 2
library/src/main/java/com/afollestad/materialdialogs/internal/MDRootLayout.java

@@ -47,6 +47,7 @@ public class MDRootLayout extends ViewGroup {
     private boolean mIsStacked = false;
     private boolean mUseFullPadding = true;
     private boolean mReducePaddingNoTitleNoButtons;
+    private boolean mNoTitleNoPadding;
 
     private int mNoTitlePaddingFull;
     private int mButtonPaddingFull;
@@ -104,6 +105,10 @@ public class MDRootLayout extends ViewGroup {
         setWillNotDraw(false);
     }
 
+    public void noTitleNoPadding() {
+        mNoTitleNoPadding = true;
+    }
+
     @Override
     public void onFinishInflate() {
         super.onFinishInflate();
@@ -186,7 +191,7 @@ public class MDRootLayout extends ViewGroup {
             mTitleBar.measure(MeasureSpec.makeMeasureSpec(width, MeasureSpec.EXACTLY),
                     MeasureSpec.UNSPECIFIED);
             availableHeight -= mTitleBar.getMeasuredHeight();
-        } else {
+        } else if(!mNoTitleNoPadding) {
             fullPadding += mNoTitlePaddingFull;
         }
 
@@ -242,7 +247,7 @@ public class MDRootLayout extends ViewGroup {
             int height = mTitleBar.getMeasuredHeight();
             mTitleBar.layout(l, t, r, t + height);
             t += height;
-        } else if (mUseFullPadding) {
+        } else if (!mNoTitleNoPadding && mUseFullPadding) {
             t += mNoTitlePaddingFull;
         }
 

+ 3 - 2
library/src/main/res/layout/md_dialog_custom.xml

@@ -1,8 +1,9 @@
 <com.afollestad.materialdialogs.internal.MDRootLayout
-    android:orientation="vertical"
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:id="@+id/root"
     android:layout_width="match_parent"
     android:layout_height="wrap_content"
-    xmlns:android="http://schemas.android.com/apk/res/android">
+    android:orientation="vertical">
 
     <include layout="@layout/md_stub_titleframe" />
 

+ 5 - 5
library/src/main/res/layout/md_stub_titleframe.xml

@@ -1,22 +1,22 @@
 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:tools="http://schemas.android.com/tools"
     android:id="@+id/titleFrame"
-    android:orientation="horizontal"
     android:layout_width="match_parent"
     android:layout_height="wrap_content"
     android:gravity="center_vertical"
+    android:orientation="horizontal"
+    android:paddingBottom="@dimen/md_title_frame_margin_bottom"
     android:paddingLeft="@dimen/md_dialog_frame_margin"
-    android:paddingTop="@dimen/md_dialog_frame_margin"
     android:paddingRight="@dimen/md_dialog_frame_margin"
-    android:paddingBottom="@dimen/md_title_frame_margin_bottom">
+    android:paddingTop="@dimen/md_dialog_frame_margin">
 
     <ImageView
         android:id="@+id/icon"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
-        android:scaleType="fitXY"
-        android:layout_marginRight="@dimen/md_icon_margin"
         android:layout_marginEnd="@dimen/md_icon_margin"
+        android:layout_marginRight="@dimen/md_icon_margin"
+        android:scaleType="fitXY"
         tools:ignore="ContentDescription" />
 
     <TextView

+ 24 - 24
sample/src/main/res/layout/dialog_customview.xml

@@ -1,80 +1,80 @@
 <?xml version="1.0" encoding="utf-8"?>
 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
-    android:orientation="vertical"
     android:layout_width="match_parent"
-    android:layout_height="wrap_content">
+    android:layout_height="wrap_content"
+    android:orientation="vertical">
 
     <TextView
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
-        android:textSize="@dimen/customTitle"
+        android:text="@string/signalStrength"
         android:textColor="#80000000"
-        android:text="@string/signalStrength" />
+        android:textSize="@dimen/customTitle" />
 
     <TextView
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
-        android:textSize="@dimen/customEntry"
         android:layout_marginTop="4dp"
+        android:text="@string/excellent"
         android:textColor="#000000"
-        android:text="@string/excellent" />
+        android:textSize="@dimen/customEntry" />
 
     <TextView
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
-        android:textSize="@dimen/customTitle"
-        android:textColor="#80000000"
         android:layout_marginTop="18dp"
-        android:text="@string/ssid" />
+        android:text="@string/ssid"
+        android:textColor="#80000000"
+        android:textSize="@dimen/customTitle" />
 
     <TextView
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
-        android:textSize="@dimen/customEntry"
         android:layout_marginTop="4dp"
+        android:text="@string/ssidLit"
         android:textColor="#000000"
-        android:text="@string/ssidLit" />
+        android:textSize="@dimen/customEntry" />
 
     <TextView
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
-        android:textSize="@dimen/customTitle"
-        android:textColor="#80000000"
         android:layout_marginTop="18dp"
-        android:text="@string/security" />
+        android:text="@string/security"
+        android:textColor="#80000000"
+        android:textSize="@dimen/customTitle" />
 
     <TextView
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
-        android:textSize="@dimen/customEntry"
         android:layout_marginTop="4dp"
+        android:text="@string/securityType"
         android:textColor="#000000"
-        android:text="@string/securityType" />
+        android:textSize="@dimen/customEntry" />
 
     <TextView
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
-        android:textSize="@dimen/customTitle"
-        android:textColor="#80000000"
         android:layout_marginTop="18dp"
-        android:text="@string/password" />
+        android:text="@string/password"
+        android:textColor="#80000000"
+        android:textSize="@dimen/customTitle" />
 
     <EditText
         android:id="@+id/password"
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
-        android:textSize="@dimen/customEntry"
         android:layout_marginTop="4dp"
+        android:inputType="textPassword"
         android:textColor="#000000"
-        android:inputType="textPassword" />
+        android:textSize="@dimen/customEntry" />
 
     <CheckBox
         android:id="@+id/showPassword"
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
-        android:textSize="@dimen/customEntry"
-        android:textColor="#000000"
+        android:layout_marginTop="18dp"
         android:text="@string/showPassword"
-        android:layout_marginTop="18dp" />
+        android:textColor="#000000"
+        android:textSize="@dimen/customEntry" />
 
 </LinearLayout>