FABM: Botón de acción flotante Menú
Tengo menú de acción flotante y uso esta biblioteca para hacerlo 'com.github.clans:fab:1.6.1'
Ahora necesito cambiar mi icono cuando hago clic en él. Tengo un icono, y cuando hago clic en el menú necesito transformarlo a otro icono (icono más). ¿Es posible? Este es mi xml:
<com.github.clans.fab.FloatingActionMenu android:id="@+id/menu3" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_alignParentBottom="true" android:layout_alignParentRight="true" fab:menu_icon="@drawable/ic_float_cards" android:layout_margin="16dp" fab:menu_animationDelayPerItem="0" fab:menu_colorNormal="@color/event_background" fab:menu_colorPressed="@color/fab_colorPressed" fab:menu_colorRipple="@color/fab_colorRipple" fab:menu_labels_maxLines="2" fab:menu_labels_ellipsize="end"> <com.github.clans.fab.FloatingActionButton android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/ic_dial_fill" fab:fab_label="Пополнить" style="@style/MenuButtonsSmall.Green" /> <com.github.clans.fab.FloatingActionButton android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/ic_dial_pay" fab:fab_label="Оплатить" style="@style/MenuButtonsSmall.Yellow" /> <com.github.clans.fab.FloatingActionButton android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/ic_dial_outcome" fab:fab_label="Перевести" style="@style/MenuButtonsSmall.Red" /> <com.github.clans.fab.FloatingActionButton android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/ic_dial_income" fab:fab_label="Запрос перевода" style="@style/MenuButtonsSmall.DarkPink" /> <com.github.clans.fab.FloatingActionButton android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/ic_dial_send" fab:fab_label="Сообщение" style="@style/MenuButtonsSmall.Purple" /> </com.github.clans.fab.FloatingActionMenu>
Al principio icono es ic_float_cards
, pero cuando hago clic debe ser es ic_float_cross
Si usted tiene algunas ideas me dicen por favor)
- Cómo agregar menú a un diseño
- Menú diferente para diferentes fragmentos
- Cómo hacer un menú transparente de lujo como el "menú compartido" en la galería de Android?
- Android: Java: La descontinuación de SlidingDrawer
- ¿Es posible tener un menú de barras de acción usando la librería appcompat?
- Elemento de menú de Android con el icono y el texto juntos cuando showAsAction nunca es
- Botón de menú de nido de abeja objetivo
- ¿Deshabilitar el botón de menú?
- Cómo incluir un elemento de menú común en varios menús en el menú de Android xml?
- Inicie el emulador ICS sin el botón Menú
- Mostrando el diseño personalizado en el elemento de menú desplegable de desbordamiento? Androide
- ¿Cómo abrir el menú de opciones mediante programación?
- Cierre el teclado al desplazarse en la lista desplegable de autocompletetextview en Android
Esto hace el trabajo y también volverá al icono original.
final FloatingActionMenu fab = (FloatingActionMenu) findViewById(R.id.menu3); fab.setOnMenuToggleListener(new FloatingActionMenu.OnMenuToggleListener() { @Override public void onMenuToggle(boolean opened) { int drawableId; if (opened) { drawableId = R.drawable.ic_float_cross; } else { drawableId = R.drawable.ic_float_cards; } Drawable drawable = getResources().getDrawable(drawableId); fab.getMenuIconView().setImageDrawable(drawable); } });
Hay una mejor solución que incluye cross-fade animación entre icono drawables. Se puede encontrar en la aplicación de clanes de ejemplo aquí . Este es el código que hace el trabajo:
final FloatingActionMenu fabMenu = ...; AnimatorSet set = new AnimatorSet(); View menuIconView = fabMenu.getMenuIconView(); ObjectAnimator scaleOutX = ObjectAnimator.ofFloat(menuIconView, "scaleX", 1.0f, 0.2f); ObjectAnimator scaleOutY = ObjectAnimator.ofFloat(menuIconView, "scaleY", 1.0f, 0.2f); ObjectAnimator scaleInX = ObjectAnimator.ofFloat(menuIconView, "scaleX", 0.2f, 1.0f); ObjectAnimator scaleInY = ObjectAnimator.ofFloat(menuIconView, "scaleY", 0.2f, 1.0f); scaleOutX.setDuration(50); scaleOutY.setDuration(50); scaleInX.setDuration(150); scaleInY.setDuration(150); scaleInX.addListener(new AnimatorListenerAdapter() { @Override public void onAnimationStart(Animator animation) { fabMenu.getMenuIconView().setImageResource(fabMenu.isOpened() ? R.drawable.ic_float_cross : R.drawable.ic_float_cards); } }); set.play(scaleOutX).with(scaleOutY); set.play(scaleInX).with(scaleInY).after(scaleOutX); set.setInterpolator(new OvershootInterpolator(2)); fabMenu.setIconToggleAnimatorSet(set);
- No puedo confirmar un archivo de biblioteca .so utilizando subclipse
- Excepción de puntero nulo – Obtener el valor de EditarTexto