From 6fb8f00a68b64b70416e7825b62835b664c826d3 Mon Sep 17 00:00:00 2001 From: Guillaume BEGUIN Date: Tue, 2 Jan 2018 16:36:29 +0100 Subject: [PATCH 1/2] Make possible to have a menu item without icon --- .../materialfabspeeddial/FabSpeedDial.java | 55 ++++++++++--------- .../FabSpeedDialMenuItem.java | 4 +- .../res/layout-land/fab_speed_dial_item.xml | 11 ++++ 3 files changed, 44 insertions(+), 26 deletions(-) diff --git a/library/src/main/java/io/github/kobakei/materialfabspeeddial/FabSpeedDial.java b/library/src/main/java/io/github/kobakei/materialfabspeeddial/FabSpeedDial.java index 4d82f5b..c9c5812 100644 --- a/library/src/main/java/io/github/kobakei/materialfabspeeddial/FabSpeedDial.java +++ b/library/src/main/java/io/github/kobakei/materialfabspeeddial/FabSpeedDial.java @@ -318,9 +318,12 @@ private View createItemView(int index, final MenuItem menuItem) { // Mini FAB final FloatingActionButton miniFab = itemView.findViewById(R.id.fab_mini); if (menuItem.getIcon() != null) { + miniFab.setVisibility(VISIBLE); miniFab.setImageDrawable(menuItem.getIcon()); + miniFab.setEnabled(menuItem.isEnabled()); + } else { + miniFab.setVisibility(GONE); } - miniFab.setEnabled(menuItem.isEnabled()); if (miniFabBackgroundColor != null) { miniFab.setBackgroundTintList(miniFabBackgroundColor); @@ -359,36 +362,38 @@ private View createItemView(int index, final MenuItem menuItem) { // TextView final TextView label = itemView.findViewById(R.id.text); - if (label != null) { - label.setText(menuItem.getTitle()); - label.setEnabled(menuItem.isEnabled()); + label.setText(menuItem.getTitle()); + label.setEnabled(menuItem.isEnabled()); - if (miniFabTextColor != null) { - label.setTextColor(miniFabTextColor); - } - if (miniFabTextColorList != null) { - label.setTextColor(miniFabTextColorList.get(index)); + if (miniFabTextColor != null) { + label.setTextColor(miniFabTextColor); + } + if (miniFabTextColorList != null) { + label.setTextColor(miniFabTextColorList.get(index)); + } + + if (miniFabTextBackground != null) { + Drawable.ConstantState cs = miniFabTextBackground.mutate().getConstantState(); + if (cs != null) { + label.setBackground(cs.newDrawable()); } + } + if (miniFabTextBackgroundList != null) { + label.setBackground(miniFabTextBackgroundList.get(index)); + } - if (miniFabTextBackground != null) { - Drawable.ConstantState cs = miniFabTextBackground.mutate().getConstantState(); - if (cs != null) { - label.setBackground(cs.newDrawable()); + label.setOnClickListener(new OnClickListener() { + @Override + public void onClick(View v) { + for (OnMenuItemClickListener listener : menuClickListeners) { + listener.onMenuItemClick(miniFab, label, menuItem.getItemId()); } + closeMenu(); } - if (miniFabTextBackgroundList != null) { - label.setBackground(miniFabTextBackgroundList.get(index)); - } + }); - label.setOnClickListener(new OnClickListener() { - @Override - public void onClick(View v) { - for (OnMenuItemClickListener listener : menuClickListeners) { - listener.onMenuItemClick(miniFab, label, menuItem.getItemId()); - } - closeMenu(); - } - }); + if (miniFab.getVisibility() == GONE) { + label.setVisibility(VISIBLE); } // Listener diff --git a/library/src/main/java/io/github/kobakei/materialfabspeeddial/FabSpeedDialMenuItem.java b/library/src/main/java/io/github/kobakei/materialfabspeeddial/FabSpeedDialMenuItem.java index 4e70d93..e183378 100644 --- a/library/src/main/java/io/github/kobakei/materialfabspeeddial/FabSpeedDialMenuItem.java +++ b/library/src/main/java/io/github/kobakei/materialfabspeeddial/FabSpeedDialMenuItem.java @@ -107,7 +107,9 @@ public MenuItem setIcon(Drawable icon) { @Override public MenuItem setIcon(@DrawableRes int iconRes) { - this.icon = AppCompatResources.getDrawable(context, iconRes); + if (iconRes > 0) { + this.icon = AppCompatResources.getDrawable(context, iconRes); + } return this; } diff --git a/library/src/main/res/layout-land/fab_speed_dial_item.xml b/library/src/main/res/layout-land/fab_speed_dial_item.xml index 0802cf5..1e171df 100644 --- a/library/src/main/res/layout-land/fab_speed_dial_item.xml +++ b/library/src/main/res/layout-land/fab_speed_dial_item.xml @@ -8,6 +8,17 @@ android:layout_height="wrap_content" android:gravity="center_vertical|end"> + + Date: Tue, 2 Jan 2018 18:05:05 +0100 Subject: [PATCH 2/2] Manage padding between menu items --- .../io/github/kobakei/materialfabspeeddial/FabSpeedDial.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/library/src/main/java/io/github/kobakei/materialfabspeeddial/FabSpeedDial.java b/library/src/main/java/io/github/kobakei/materialfabspeeddial/FabSpeedDial.java index c9c5812..197a1ff 100644 --- a/library/src/main/java/io/github/kobakei/materialfabspeeddial/FabSpeedDial.java +++ b/library/src/main/java/io/github/kobakei/materialfabspeeddial/FabSpeedDial.java @@ -394,6 +394,11 @@ public void onClick(View v) { if (miniFab.getVisibility() == GONE) { label.setVisibility(VISIBLE); + float scale = getResources().getDisplayMetrics().density; + int padding = (int) (28 * scale + 0.5f); + MarginLayoutParams labelParams = (MarginLayoutParams) miniFab.getLayoutParams(); + params.setMargins(labelParams.leftMargin, labelParams.topMargin + padding + extraMarginPixel, labelParams.rightMargin, labelParams.bottomMargin + padding + extraMarginPixel); + label.setLayoutParams(labelParams); } // Listener