浏览代码

0.0.44.beta15
- PopMenu 新增自定义布局支持;
- PopMenu 新增 setOffScreen(boolean) 方法允许设置是否允许超出屏幕显示,默认关闭。

kongzue 3 年之前
父节点
当前提交
cd30b9adaa

+ 61 - 0
.idea/inspectionProfiles/Project_Default.xml

@@ -1,6 +1,66 @@
 <component name="InspectionProjectProfileManager">
   <profile version="1.0">
     <option name="myName" value="Project Default" />
+    <inspection_tool class="AliAccessStaticViaInstance" enabled="false" level="BLOCKER" enabled_by_default="false" />
+    <inspection_tool class="AliArrayNamingShouldHaveBracket" enabled="false" level="MAJOR" enabled_by_default="false" />
+    <inspection_tool class="AliControlFlowStatementWithoutBraces" enabled="false" level="BLOCKER" enabled_by_default="false" />
+    <inspection_tool class="AliDeprecation" enabled="false" level="CRITICAL" enabled_by_default="false" />
+    <inspection_tool class="AliEqualsAvoidNull" enabled="false" level="CRITICAL" enabled_by_default="false" />
+    <inspection_tool class="AliLongLiteralsEndingWithLowercaseL" enabled="false" level="BLOCKER" enabled_by_default="false" />
+    <inspection_tool class="AliMissingOverrideAnnotation" enabled="false" level="BLOCKER" enabled_by_default="false" />
+    <inspection_tool class="AliWrapperTypeEquality" enabled="false" level="BLOCKER" enabled_by_default="false" />
+    <inspection_tool class="AlibabaAbstractClassShouldStartWithAbstractNaming" enabled="false" level="CRITICAL" enabled_by_default="false" />
+    <inspection_tool class="AlibabaAbstractMethodOrInterfaceMethodMustUseJavadoc" enabled="false" level="MAJOR" enabled_by_default="false" />
+    <inspection_tool class="AlibabaAvoidApacheBeanUtilsCopy" enabled="false" level="BLOCKER" enabled_by_default="false" />
+    <inspection_tool class="AlibabaAvoidCallStaticSimpleDateFormat" enabled="false" level="CRITICAL" enabled_by_default="false" />
+    <inspection_tool class="AlibabaAvoidCommentBehindStatement" enabled="false" level="MAJOR" enabled_by_default="false" />
+    <inspection_tool class="AlibabaAvoidComplexCondition" enabled="false" level="MAJOR" enabled_by_default="false" />
+    <inspection_tool class="AlibabaAvoidConcurrentCompetitionRandom" enabled="false" level="MAJOR" enabled_by_default="false" />
+    <inspection_tool class="AlibabaAvoidDoubleOrFloatEqualCompare" enabled="false" level="CRITICAL" enabled_by_default="false" />
+    <inspection_tool class="AlibabaAvoidManuallyCreateThread" enabled="false" level="CRITICAL" enabled_by_default="false" />
+    <inspection_tool class="AlibabaAvoidMissUseOfMathRandom" enabled="false" level="MAJOR" enabled_by_default="false" />
+    <inspection_tool class="AlibabaAvoidNegationOperator" enabled="false" level="MAJOR" enabled_by_default="false" />
+    <inspection_tool class="AlibabaAvoidNewDateGetTime" enabled="false" level="BLOCKER" enabled_by_default="false" />
+    <inspection_tool class="AlibabaAvoidPatternCompileInMethod" enabled="false" level="BLOCKER" enabled_by_default="false" />
+    <inspection_tool class="AlibabaAvoidReturnInFinally" enabled="false" level="CRITICAL" enabled_by_default="false" />
+    <inspection_tool class="AlibabaAvoidStartWithDollarAndUnderLineNaming" enabled="false" level="CRITICAL" enabled_by_default="false" />
+    <inspection_tool class="AlibabaAvoidUseTimer" enabled="false" level="BLOCKER" enabled_by_default="false" />
+    <inspection_tool class="AlibabaBigDecimalAvoidDoubleConstructor" enabled="false" level="MAJOR" enabled_by_default="false" />
+    <inspection_tool class="AlibabaBooleanPropertyShouldNotStartWithIs" enabled="false" level="CRITICAL" enabled_by_default="false" />
+    <inspection_tool class="AlibabaClassCastExceptionWithSubListToArrayList" enabled="false" level="CRITICAL" enabled_by_default="false" />
+    <inspection_tool class="AlibabaClassCastExceptionWithToArray" enabled="false" level="CRITICAL" enabled_by_default="false" />
+    <inspection_tool class="AlibabaClassMustHaveAuthor" enabled="false" level="MAJOR" enabled_by_default="false" />
+    <inspection_tool class="AlibabaClassNamingShouldBeCamel" enabled="false" level="MAJOR" enabled_by_default="false" />
+    <inspection_tool class="AlibabaCollectionInitShouldAssignCapacity" enabled="false" level="MAJOR" enabled_by_default="false" />
+    <inspection_tool class="AlibabaCommentsMustBeJavadocFormat" enabled="false" level="MAJOR" enabled_by_default="false" />
+    <inspection_tool class="AlibabaConcurrentExceptionWithModifyOriginSubList" enabled="false" level="CRITICAL" enabled_by_default="false" />
+    <inspection_tool class="AlibabaConstantFieldShouldBeUpperCase" enabled="false" level="CRITICAL" enabled_by_default="false" />
+    <inspection_tool class="AlibabaCountDownShouldInFinally" enabled="false" level="MAJOR" enabled_by_default="false" />
+    <inspection_tool class="AlibabaDontModifyInForeachCircle" enabled="false" level="BLOCKER" enabled_by_default="false" />
+    <inspection_tool class="AlibabaEnumConstantsMustHaveComment" enabled="false" level="CRITICAL" enabled_by_default="false" />
+    <inspection_tool class="AlibabaExceptionClassShouldEndWithException" enabled="false" level="CRITICAL" enabled_by_default="false" />
+    <inspection_tool class="AlibabaIbatisMethodQueryForList" enabled="false" level="MAJOR" enabled_by_default="false" />
+    <inspection_tool class="AlibabaLockShouldWithTryFinally" enabled="false" level="BLOCKER" enabled_by_default="false" />
+    <inspection_tool class="AlibabaLowerCamelCaseVariableNaming" enabled="false" level="CRITICAL" enabled_by_default="false" />
+    <inspection_tool class="AlibabaMethodReturnWrapperType" enabled="false" level="MAJOR" enabled_by_default="false" />
+    <inspection_tool class="AlibabaMethodTooLong" enabled="false" level="MAJOR" enabled_by_default="false" />
+    <inspection_tool class="AlibabaPackageNaming" enabled="false" level="MAJOR" enabled_by_default="false" />
+    <inspection_tool class="AlibabaPojoMustOverrideToString" enabled="false" level="MAJOR" enabled_by_default="false" />
+    <inspection_tool class="AlibabaPojoMustUsePrimitiveField" enabled="false" level="MAJOR" enabled_by_default="false" />
+    <inspection_tool class="AlibabaPojoNoDefaultValue" enabled="false" level="MAJOR" enabled_by_default="false" />
+    <inspection_tool class="AlibabaRemoveCommentedCode" enabled="false" level="MAJOR" enabled_by_default="false" />
+    <inspection_tool class="AlibabaServiceOrDaoClassShouldEndWithImpl" enabled="false" level="CRITICAL" enabled_by_default="false" />
+    <inspection_tool class="AlibabaStringConcat" enabled="false" level="MAJOR" enabled_by_default="false" />
+    <inspection_tool class="AlibabaSwitchStatement" enabled="false" level="CRITICAL" enabled_by_default="false" />
+    <inspection_tool class="AlibabaTestClassShouldEndWithTestNaming" enabled="false" level="MAJOR" enabled_by_default="false" />
+    <inspection_tool class="AlibabaThreadLocalShouldRemove" enabled="false" level="CRITICAL" enabled_by_default="false" />
+    <inspection_tool class="AlibabaThreadPoolCreation" enabled="false" level="BLOCKER" enabled_by_default="false" />
+    <inspection_tool class="AlibabaThreadShouldSetName" enabled="false" level="CRITICAL" enabled_by_default="false" />
+    <inspection_tool class="AlibabaTransactionMustHaveRollback" enabled="false" level="MAJOR" enabled_by_default="false" />
+    <inspection_tool class="AlibabaUndefineMagicConstant" enabled="false" level="MAJOR" enabled_by_default="false" />
+    <inspection_tool class="AlibabaUnsupportedExceptionWithModifyAsList" enabled="false" level="CRITICAL" enabled_by_default="false" />
+    <inspection_tool class="AlibabaUseQuietReferenceNotation" enabled="false" level="MAJOR" enabled_by_default="false" />
+    <inspection_tool class="AlibabaUseRightCaseForDateFormat" enabled="false" level="CRITICAL" enabled_by_default="false" />
     <inspection_tool class="AndroidLintImpliedTouchscreenHardware" enabled="false" level="ERROR" enabled_by_default="false" />
     <inspection_tool class="JavaDoc" enabled="true" level="WARNING" enabled_by_default="true">
       <option name="TOP_LEVEL_CLASS_OPTIONS">
@@ -33,5 +93,6 @@
       <option name="IGNORE_POINT_TO_ITSELF" value="false" />
       <option name="myAdditionalJavadocTags" value="hide,date" />
     </inspection_tool>
+    <inspection_tool class="MapOrSetKeyShouldOverrideHashCodeEquals" enabled="false" level="CRITICAL" enabled_by_default="false" />
   </profile>
 </component>

+ 6 - 0
.idea/smartfox_info.xml

@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="SmartFoxProjectConfig">
+    <option name="projectInspectionClosed" value="true" />
+  </component>
+</project>

+ 104 - 23
DialogX/src/main/java/com/kongzue/dialogx/dialogs/PopMenu.java

@@ -65,6 +65,7 @@ public class PopMenu extends BaseDialog {
     protected int width = -1;                                               //指定菜单宽度
     protected int height = -1;                                              //指定菜单高度
     protected TextInfo menuTextInfo;
+    protected boolean offScreen = false;                                    //超出屏幕
     
     protected int alignGravity = -1;                                        //指定菜单相对 baseView 的位置
     
@@ -187,7 +188,9 @@ public class PopMenu extends BaseDialog {
             
             dialogView = createView(layoutId);
             dialogImpl = new DialogImpl(dialogView);
-            if (dialogView != null) dialogView.setTag(me);
+            if (dialogView != null) {
+                dialogView.setTag(me);
+            }
         }
         show(dialogView);
         if (baseView != null) {
@@ -318,49 +321,67 @@ public class PopMenu extends BaseDialog {
                         //菜单位置计算逻辑
                         int baseViewLeft = baseViewLoc[0];
                         int baseViewTop = baseViewLoc[1];
+                        int calX = 0, calY = 0;
                         if (alignGravity != -1) {
                             if (isAlignGravity(Gravity.CENTER_VERTICAL)) {
-                                boxBody.setY(Math.max(0, baseViewTop + baseView.getMeasuredHeight() / 2 - boxBody.getHeight() / 2));
+                                calY = (Math.max(0, baseViewTop + baseView.getMeasuredHeight() / 2 - boxBody.getHeight() / 2));
                             }
                             if (isAlignGravity(Gravity.CENTER_HORIZONTAL)) {
-                                boxBody.setX(Math.max(0, baseViewLeft + (
+                                calX = (Math.max(0, baseViewLeft + (
                                         getWidth() > 0 ? baseView.getMeasuredWidth() / 2 - getWidth() / 2 : 0
                                 )));
                             }
                             if (isAlignGravity(Gravity.CENTER)) {
-                                boxBody.setX(Math.max(0, baseViewLeft + (
+                                calX = (Math.max(0, baseViewLeft + (
                                         getWidth() > 0 ? (baseView.getMeasuredWidth() / 2 - getWidth() / 2) : 0
                                 )));
-                                boxBody.setY(Math.max(0, baseViewTop + baseView.getMeasuredHeight() / 2 - boxBody.getHeight() / 2));
+                                calY = (Math.max(0, baseViewTop + baseView.getMeasuredHeight() / 2 - boxBody.getHeight() / 2));
                             }
                             if (overlayBaseView) {
                                 //菜单覆盖在 baseView 上时
                                 if (isAlignGravity(Gravity.TOP)) {
-                                    boxBody.setY(baseViewTop - boxBody.getHeight() + baseView.getHeight());
+                                    calY = (baseViewTop - boxBody.getHeight() + baseView.getHeight());
                                 }
                                 if (isAlignGravity(Gravity.LEFT)) {
-                                    boxBody.setX(baseViewLeft);
+                                    calX = (baseViewLeft);
                                 }
                                 if (isAlignGravity(Gravity.RIGHT)) {
-                                    boxBody.setX(baseViewLeft + (getWidth() > 0 ? baseView.getMeasuredWidth() - width : 0));
+                                    calX = (baseViewLeft + (getWidth() > 0 ? baseView.getMeasuredWidth() - width : 0));
                                 }
                                 if (isAlignGravity(Gravity.BOTTOM)) {
-                                    boxBody.setY(baseViewTop);
+                                    calY = (baseViewTop);
                                 }
                             } else {
                                 if (isAlignGravity(Gravity.TOP)) {
-                                    boxBody.setY(Math.max(0, baseViewTop - boxBody.getHeight()));
+                                    calY = (Math.max(0, baseViewTop - boxBody.getHeight()));
                                 }
                                 if (isAlignGravity(Gravity.LEFT)) {
-                                    boxBody.setX(Math.max(0, baseViewLeft - boxBody.getWidth()));
+                                    calX = (Math.max(0, baseViewLeft - boxBody.getWidth()));
                                 }
                                 if (isAlignGravity(Gravity.RIGHT)) {
-                                    boxBody.setX(Math.max(0, baseViewLeft + baseView.getWidth()));
+                                    calX = (Math.max(0, baseViewLeft + baseView.getWidth()));
                                 }
                                 if (isAlignGravity(Gravity.BOTTOM)) {
-                                    boxBody.setY(Math.max(0, baseViewTop + baseView.getHeight()));
+                                    calY = (Math.max(0, baseViewTop + baseView.getHeight()));
+                                }
+                            }
+                            if (!offScreen) {
+                                if (calX < 0) {
+                                    calX = 0;
+                                }
+                                if ((calX + boxBody.getWidth()) > boxRoot.getWidth()) {
+                                    calX = boxRoot.getWidth() - boxBody.getWidth();
+                                }
+                                if (calY < 0) {
+                                    calY = 0;
+                                }
+                                if ((calY + boxBody.getHeight()) > boxRoot.getHeight()) {
+                                    calY = boxRoot.getHeight() - boxBody.getHeight();
                                 }
                             }
+                            
+                            if (calX != 0) boxBody.setX(calX);
+                            if (calY != 0) boxBody.setY(calY);
                         }
                         
                         //展开动画
@@ -372,6 +393,26 @@ public class PopMenu extends BaseDialog {
                                 if ((boxBody.getY() + aimHeight) > boxRoot.getSafeHeight()) {
                                     boxBody.setY(boxRoot.getSafeHeight() - aimHeight);
                                 }
+                                
+                                if (!offScreen) {
+                                    float calX = boxBody.getX();
+                                    float calY = boxBody.getY();
+                                    if (calX < 0) {
+                                        calX = 0;
+                                    }
+                                    if ((calX + boxBody.getWidth()) > boxRoot.getWidth()) {
+                                        calX = boxRoot.getWidth() - boxBody.getWidth();
+                                    }
+                                    if (calY < 0) {
+                                        calY = 0;
+                                    }
+                                    if ((calY + boxBody.getHeight()) > boxRoot.getHeight()) {
+                                        calY = boxRoot.getHeight() - boxBody.getHeight();
+                                    }
+                                    boxBody.setX(calX);
+                                    boxBody.setY(calY);
+                                }
+                                
                                 boxBody.requestLayout();
                             }
                             
@@ -460,6 +501,9 @@ public class PopMenu extends BaseDialog {
             
             if (onBindView != null && onBindView.getCustomView() != null) {
                 onBindView.bindParent(boxCustom, me);
+                boxCustom.setVisibility(View.VISIBLE);
+            } else {
+                boxCustom.setVisibility(View.GONE);
             }
             
             if (width != -1) {
@@ -475,7 +519,9 @@ public class PopMenu extends BaseDialog {
         
         @Override
         public void doDismiss(View v) {
-            if (v != null) v.setEnabled(false);
+            if (v != null) {
+                v.setEnabled(false);
+            }
             
             if (!dismissAnimFlag) {
                 dismissAnimFlag = true;
@@ -483,7 +529,9 @@ public class PopMenu extends BaseDialog {
                     @Override
                     public void run() {
                         
-                        if (overrideExitDuration != -1) exitAnimDuration = overrideExitDuration;
+                        if (overrideExitDuration != -1) {
+                            exitAnimDuration = overrideExitDuration;
+                        }
                         Animation exitAnim = AnimationUtils.loadAnimation(getContext() == null ? boxRoot.getContext() : getContext(), R.anim.anim_dialogx_default_exit);
                         if (exitAnimDuration != -1) {
                             exitAnim.setDuration(exitAnimDuration);
@@ -521,7 +569,9 @@ public class PopMenu extends BaseDialog {
     }
     
     private int getBodyRealHeight() {
-        if (getDialogImpl() == null) return 0;
+        if (getDialogImpl() == null) {
+            return 0;
+        }
         
         int matchParentMeasureSpec = View.MeasureSpec.makeMeasureSpec(((View) getDialogImpl().boxBody.getParent()).getWidth(), View.MeasureSpec.EXACTLY);
         int wrapContentMeasureSpec = View.MeasureSpec.makeMeasureSpec(((View) getDialogImpl().boxBody.getParent()).getHeight(), View.MeasureSpec.AT_MOST);
@@ -534,7 +584,9 @@ public class PopMenu extends BaseDialog {
         runOnMain(new Runnable() {
             @Override
             public void run() {
-                if (dialogImpl == null) return;
+                if (dialogImpl == null) {
+                    return;
+                }
                 dialogImpl.doDismiss(null);
             }
         });
@@ -557,8 +609,11 @@ public class PopMenu extends BaseDialog {
     
     }
     
+    @Override
     public View getDialogView() {
-        if (dialogView == null) return null;
+        if (dialogView == null) {
+            return null;
+        }
         return dialogView;
     }
     
@@ -586,11 +641,15 @@ public class PopMenu extends BaseDialog {
     }
     
     public void refreshUI() {
-        if (getDialogImpl() == null) return;
+        if (getDialogImpl() == null) {
+            return;
+        }
         runOnMain(new Runnable() {
             @Override
             public void run() {
-                if (dialogImpl != null) dialogImpl.refreshView();
+                if (dialogImpl != null) {
+                    dialogImpl.refreshView();
+                }
             }
         });
     }
@@ -616,7 +675,9 @@ public class PopMenu extends BaseDialog {
     
     public PopMenu setDialogLifecycleCallback(DialogLifecycleCallback<PopMenu> dialogLifecycleCallback) {
         this.dialogLifecycleCallback = dialogLifecycleCallback;
-        if (isShow) dialogLifecycleCallback.onShow(me);
+        if (isShow) {
+            dialogLifecycleCallback.onShow(me);
+        }
         return this;
     }
     
@@ -661,7 +722,9 @@ public class PopMenu extends BaseDialog {
     }
     
     public View getCustomView() {
-        if (onBindView == null) return null;
+        if (onBindView == null) {
+            return null;
+        }
         return onBindView.getCustomView();
     }
     
@@ -728,7 +791,9 @@ public class PopMenu extends BaseDialog {
     }
     
     public TextInfo getMenuTextInfo() {
-        if (menuTextInfo == null) return DialogX.menuTextInfo;
+        if (menuTextInfo == null) {
+            return DialogX.menuTextInfo;
+        }
         return menuTextInfo;
     }
     
@@ -736,4 +801,20 @@ public class PopMenu extends BaseDialog {
         this.menuTextInfo = menuTextInfo;
         return this;
     }
+    
+    public boolean isOffScreen() {
+        return offScreen;
+    }
+    
+    /**
+     * 是否允许超出屏幕显示
+     * PopMenu 默认位置显示在屏幕内,开启后将无视屏幕范围限制。
+     *
+     * @param offScreen 超出屏幕
+     * @return  PopMenu实例
+     */
+    public PopMenu setOffScreen(boolean offScreen) {
+        this.offScreen = offScreen;
+        return this;
+    }
 }

+ 1 - 1
DialogX/src/main/java/com/kongzue/dialogx/interfaces/BaseDialog.java

@@ -490,7 +490,7 @@ public abstract class BaseDialog {
             return;
         }
         if (textInfo.getFontSize() > 0) {
-            textView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, textInfo.getFontSize());
+            textView.setTextSize(textInfo.getFontSizeComplexUnit(), textInfo.getFontSize());
         }
         if (textInfo.getFontColor() != 1) {
             textView.setTextColor(textInfo.getFontColor());

+ 32 - 0
DialogX/src/main/java/com/kongzue/dialogx/util/TextInfo.java

@@ -1,5 +1,7 @@
 package com.kongzue.dialogx.util;
 
+import android.util.TypedValue;
+
 /**
  * Author: @Kongzue
  * Github: https://github.com/kongzue/
@@ -10,16 +12,37 @@ package com.kongzue.dialogx.util;
 public class TextInfo {
     
     private int fontSize = -1;              //字号大小,值为-1时使用默认样式,单位:dp
+    private FONT_SIZE_UNIT fontSizeUnit = FONT_SIZE_UNIT.DP;  //字号单位
     private int gravity = -1;               //对齐方式,值为-1时使用默认样式,取值可使用Gravity.CENTER等对齐方式
     private int fontColor = 1;              //文字颜色,值为1时使用默认样式,取值可以用Color.rgb(r,g,b)等方式获取
     private boolean bold = false;           //是否粗体
     private int maxLines = -1;              //最大行数
     private boolean showEllipsis = false;   //显示省略号
     
+    public enum FONT_SIZE_UNIT {
+        DP,
+        PX,
+        SP
+    }
+    
     public int getFontSize() {
         return fontSize;
     }
     
+    public int getFontSizeComplexUnit() {
+        if (fontSizeUnit == null) {
+            return TypedValue.COMPLEX_UNIT_DIP;
+        }
+        switch (fontSizeUnit) {
+            case PX:
+                return TypedValue.COMPLEX_UNIT_PX;
+            case SP:
+                return TypedValue.COMPLEX_UNIT_SP;
+            default:
+                return TypedValue.COMPLEX_UNIT_DIP;
+        }
+    }
+    
     public TextInfo setFontSize(int fontSize) {
         this.fontSize = fontSize;
         return this;
@@ -70,6 +93,15 @@ public class TextInfo {
         return this;
     }
     
+    public FONT_SIZE_UNIT getFontSizeUnit() {
+        return fontSizeUnit;
+    }
+    
+    public TextInfo setFontSizeUnit(FONT_SIZE_UNIT fontSizeUnit) {
+        this.fontSizeUnit = fontSizeUnit;
+        return this;
+    }
+    
     @Override
     public String toString() {
         return "TextInfo{" +

+ 6 - 5
DialogX/src/main/res/layout/layout_dialogx_popmenu_material.xml

@@ -2,11 +2,11 @@
 <com.kongzue.dialogx.util.views.DialogXBaseRelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:app="http://schemas.android.com/apk/res-auto"
     android:id="@+id/box_root"
-    app:autoSafeArea="false"
     android:layout_width="match_parent"
     android:layout_height="match_parent"
     android:background="@color/black20"
     android:orientation="vertical"
+    app:autoSafeArea="false"
     app:baseFocusable="true">
 
     <com.kongzue.dialogx.util.views.MaxLinearLayout
@@ -15,10 +15,11 @@
         android:layout_height="wrap_content"
         android:background="@drawable/rect_dialogx_material_poptip_bkg"
         android:elevation="5dp"
-        android:paddingTop="5dp"
-        android:paddingBottom="5dp"
+        android:clickable="true"
         android:gravity="center_vertical"
-        android:orientation="horizontal">
+        android:orientation="vertical"
+        android:paddingTop="5dp"
+        android:paddingBottom="5dp">
 
         <RelativeLayout
             android:id="@+id/box_custom"
@@ -29,7 +30,7 @@
         <com.kongzue.dialogx.util.views.PopMenuListView
             android:id="@+id/listMenu"
             android:layout_width="match_parent"
-            android:layout_height="wrap_content"/>
+            android:layout_height="wrap_content" />
 
     </com.kongzue.dialogx.util.views.MaxLinearLayout>
 

+ 6 - 5
DialogX/src/main/res/layout/layout_dialogx_popmenu_material_dark.xml

@@ -2,11 +2,11 @@
 <com.kongzue.dialogx.util.views.DialogXBaseRelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:app="http://schemas.android.com/apk/res-auto"
     android:id="@+id/box_root"
-    app:autoSafeArea="false"
     android:layout_width="match_parent"
     android:layout_height="match_parent"
     android:background="@color/black20"
     android:orientation="vertical"
+    app:autoSafeArea="false"
     app:baseFocusable="true">
 
     <com.kongzue.dialogx.util.views.MaxLinearLayout
@@ -15,10 +15,11 @@
         android:layout_height="wrap_content"
         android:background="@drawable/rect_dialogx_material_poptip_bkg_night"
         android:elevation="5dp"
-        android:paddingTop="5dp"
-        android:paddingBottom="5dp"
+        android:clickable="true"
         android:gravity="center_vertical"
-        android:orientation="horizontal">
+        android:orientation="vertical"
+        android:paddingTop="5dp"
+        android:paddingBottom="5dp">
 
         <RelativeLayout
             android:id="@+id/box_custom"
@@ -29,7 +30,7 @@
         <com.kongzue.dialogx.util.views.PopMenuListView
             android:id="@+id/listMenu"
             android:layout_width="match_parent"
-            android:layout_height="wrap_content"/>
+            android:layout_height="wrap_content" />
 
     </com.kongzue.dialogx.util.views.MaxLinearLayout>
 

+ 4 - 1
app/src/main/java/com/kongzue/dialogxdemo/activity/MainActivity.java

@@ -6,6 +6,7 @@ import android.content.Intent;
 import android.content.res.Configuration;
 import android.graphics.Color;
 import android.net.Uri;
+import android.view.Gravity;
 import android.view.View;
 import android.view.ViewGroup;
 import android.view.WindowManager;
@@ -351,7 +352,8 @@ public class MainActivity extends BaseActivity {
             @Override
             public void onClick(View v) {
                 PopMenu.show(v, new String[]{"选项1", "选项2", "选项3"})
-                        .setOverlayBaseView(true)
+                        .setOverlayBaseView(false)
+                        .setAlignGravity(Gravity.RIGHT)
                         .setOnMenuItemClickListener(new OnMenuItemClickListener<PopMenu>() {
                             @Override
                             public boolean onClick(PopMenu dialog, CharSequence text, int index) {
@@ -547,6 +549,7 @@ public class MainActivity extends BaseActivity {
                                 v.setOnClickListener(new View.OnClickListener() {
                                     @Override
                                     public void onClick(View v) {
+                                        dialog.dismiss();
                                         PopTip.show("Click Custom View");
                                     }
                                 });