kongzue пре 3 година
родитељ
комит
fbc73f231d

+ 3 - 3
DialogX/src/main/java/com/kongzue/dialogx/dialogs/BottomMenu.java

@@ -71,7 +71,7 @@ public class BottomMenu extends BottomDialog {
         }
     }
     
-    private OnIconChangeCallBack onIconChangeCallBack;
+    private OnIconChangeCallBack<BottomMenu> onIconChangeCallBack;
     private BottomDialogListView listView;
     private BaseAdapter menuListAdapter;
     private List<CharSequence> menuList;
@@ -670,11 +670,11 @@ public class BottomMenu extends BottomDialog {
         return this;
     }
     
-    public OnIconChangeCallBack getOnIconChangeCallBack() {
+    public OnIconChangeCallBack<BottomMenu> getOnIconChangeCallBack() {
         return onIconChangeCallBack;
     }
     
-    public BottomMenu setOnIconChangeCallBack(OnIconChangeCallBack onIconChangeCallBack) {
+    public BottomMenu setOnIconChangeCallBack(OnIconChangeCallBack<BottomMenu> onIconChangeCallBack) {
         this.onIconChangeCallBack = onIconChangeCallBack;
         return this;
     }

+ 12 - 1
DialogX/src/main/java/com/kongzue/dialogx/dialogs/PopMenu.java

@@ -27,6 +27,7 @@ import com.kongzue.dialogx.interfaces.DialogConvertViewInterface;
 import com.kongzue.dialogx.interfaces.DialogLifecycleCallback;
 import com.kongzue.dialogx.interfaces.OnBackPressedListener;
 import com.kongzue.dialogx.interfaces.OnBindView;
+import com.kongzue.dialogx.interfaces.OnIconChangeCallBack;
 import com.kongzue.dialogx.interfaces.OnMenuItemClickListener;
 import com.kongzue.dialogx.util.PopMenuArrayAdapter;
 import com.kongzue.dialogx.util.views.DialogXBaseRelativeLayout;
@@ -57,6 +58,7 @@ public class PopMenu extends BaseDialog {
     protected View baseView;
     protected boolean overlayBaseView = true;
     protected OnMenuItemClickListener<PopMenu> onMenuItemClickListener;
+    private OnIconChangeCallBack<PopMenu> onIconChangeCallBack;
     
     public PopMenu() {
         super();
@@ -142,7 +144,7 @@ public class PopMenu extends BaseDialog {
         @Override
         public void init() {
             if (menuListAdapter == null) {
-                menuListAdapter = new PopMenuArrayAdapter(getContext(), menuList);
+                menuListAdapter = new PopMenuArrayAdapter(me,getContext(), menuList);
             }
             
             boxRoot.setParentDialog(me);
@@ -456,4 +458,13 @@ public class PopMenu extends BaseDialog {
         this.onMenuItemClickListener = onMenuItemClickListener;
         return this;
     }
+    
+    public OnIconChangeCallBack<PopMenu> getOnIconChangeCallBack() {
+        return onIconChangeCallBack;
+    }
+    
+    public PopMenu setOnIconChangeCallBack(OnIconChangeCallBack<PopMenu> onIconChangeCallBack) {
+        this.onIconChangeCallBack = onIconChangeCallBack;
+        return this;
+    }
 }

+ 2 - 2
DialogX/src/main/java/com/kongzue/dialogx/interfaces/OnIconChangeCallBack.java

@@ -9,7 +9,7 @@ import com.kongzue.dialogx.dialogs.BottomMenu;
  * @mail: myzcxhh@live.cn
  * @createTime: 2020/10/9 14:54
  */
-public abstract class OnIconChangeCallBack {
+public abstract class OnIconChangeCallBack<D extends BaseDialog> {
     
     private boolean autoTintIconInLightOrDarkMode;
     
@@ -20,7 +20,7 @@ public abstract class OnIconChangeCallBack {
         this.autoTintIconInLightOrDarkMode = autoTintIconInLightOrDarkMode;
     }
     
-    public abstract int getIcon(BottomMenu bottomMenu, int index, String menuText);
+    public abstract int getIcon(D dialog, int index, String menuText);
     
     public boolean isAutoTintIconInLightOrDarkMode() {
         return autoTintIconInLightOrDarkMode;

+ 29 - 4
DialogX/src/main/java/com/kongzue/dialogx/util/PopMenuArrayAdapter.java

@@ -1,6 +1,7 @@
 package com.kongzue.dialogx.util;
 
 import android.content.Context;
+import android.content.res.ColorStateList;
 import android.view.LayoutInflater;
 import android.view.View;
 import android.view.ViewGroup;
@@ -9,6 +10,7 @@ import android.widget.ImageView;
 import android.widget.TextView;
 
 import com.kongzue.dialogx.R;
+import com.kongzue.dialogx.dialogs.PopMenu;
 
 import java.util.List;
 
@@ -23,8 +25,10 @@ public class PopMenuArrayAdapter extends BaseAdapter {
     
     public List<CharSequence> menuList;
     public Context context;
+    private PopMenu popMenu;
     
-    public PopMenuArrayAdapter(Context context, List<CharSequence> menuList) {
+    public PopMenuArrayAdapter(PopMenu popMenu, Context context, List<CharSequence> menuList) {
+        this.popMenu = popMenu;
         this.menuList = menuList;
         this.context = context;
     }
@@ -51,19 +55,40 @@ public class PopMenuArrayAdapter extends BaseAdapter {
             viewHolder = new ViewHolder();
             LayoutInflater mInflater = LayoutInflater.from(context);
             int resourceId = R.layout.item_dialogx_material_context_menu_normal_text;
-    
+            
             convertView = mInflater.inflate(resourceId, null);
-    
+            
             viewHolder.imgDialogxMenuIcon = convertView.findViewById(R.id.img_dialogx_menu_icon);
             viewHolder.txtDialogxMenuText = convertView.findViewById(R.id.txt_dialogx_menu_text);
             viewHolder.imgDialogxMenuSelection = convertView.findViewById(R.id.img_dialogx_menu_selection);
-    
+            
             convertView.setTag(viewHolder);
         } else {
             viewHolder = (ViewHolder) convertView.getTag();
         }
         viewHolder.imgDialogxMenuIcon.setVisibility(View.GONE);
         viewHolder.txtDialogxMenuText.setText(menuList.get(position));
+    
+        int textColor = popMenu.isLightTheme() ? R.color.black90 : R.color.white90;
+        viewHolder.txtDialogxMenuText.setTextColor(context.getResources().getColor(textColor));
+    
+        if (popMenu.getOnIconChangeCallBack() != null) {
+            int resId = popMenu.getOnIconChangeCallBack().getIcon(popMenu, position, menuList.get(position).toString());
+            boolean autoTintIconInLightOrDarkMode = popMenu.getOnIconChangeCallBack().isAutoTintIconInLightOrDarkMode();
+        
+            if (resId != 0) {
+                viewHolder.imgDialogxMenuIcon.setVisibility(View.VISIBLE);
+                viewHolder.imgDialogxMenuIcon.setImageResource(resId);
+            
+                if (autoTintIconInLightOrDarkMode) {
+                    viewHolder.imgDialogxMenuIcon.setImageTintList(ColorStateList.valueOf(context.getResources().getColor(textColor)));
+                }
+            } else {
+                viewHolder.imgDialogxMenuIcon.setVisibility(View.GONE);
+            }
+        } else {
+            viewHolder.imgDialogxMenuIcon.setVisibility(View.GONE);
+        }
         return convertView;
     }
     

+ 1 - 1
DialogX/src/main/java/com/kongzue/dialogx/util/views/BlurView.java

@@ -495,7 +495,7 @@ public class BlurView extends View {
         }.start();
     }
     
-    public static boolean DEBUGMODE = true;
+    public static boolean DEBUGMODE = false;
     
     static boolean isDebug() {
         return DEBUGMODE && DialogX.DEBUGMODE;

+ 18 - 2
app/src/main/java/com/kongzue/dialogxdemo/activity/MainActivity.java

@@ -302,7 +302,23 @@ public class MainActivity extends BaseActivity {
         btnContextMenu.setOnClickListener(new View.OnClickListener() {
             @Override
             public void onClick(View v) {
-                PopMenu.show(new String[]{"添加", "编辑", "删除", "设置"});
+                PopMenu.show(new String[]{"添加", "编辑", "删除", "分享"}).setOnIconChangeCallBack(new OnIconChangeCallBack<PopMenu>() {
+                    @Override
+                    public int getIcon(PopMenu dialog, int index, String menuText) {
+                        switch (index){
+                            case 0:
+                                return R.mipmap.img_dialogx_demo_add;
+                            case 1:
+                                return R.mipmap.img_dialogx_demo_edit;
+                            case 2:
+                                return R.mipmap.img_dialogx_demo_delete;
+                            case 3:
+                                return R.mipmap.img_dialogx_demo_share;
+                            default:
+                                return 0;
+                        }
+                    }
+                });
             }
         });
         
@@ -525,7 +541,7 @@ public class MainActivity extends BaseActivity {
                             super.run();
                             BottomMenu.build()
                                     .setMenuList(new String[]{"添加", "查看", "编辑", "删除", "分享", "评论", "下载", "收藏", "赞!", "不喜欢", "所属专辑", "复制链接", "类似推荐", "添加", "查看", "编辑", "删除", "分享", "评论", "下载", "收藏", "赞!", "不喜欢", "所属专辑", "复制链接", "类似推荐"})
-                                    .setOnIconChangeCallBack(new OnIconChangeCallBack(true) {
+                                    .setOnIconChangeCallBack(new OnIconChangeCallBack<BottomMenu>(true) {
                                         @Override
                                         public int getIcon(BottomMenu bottomMenu, int index, String menuText) {
                                             switch (menuText) {