Android: setActionView (null) no elimina problemas de vista y anchura en MenuItem con ActionView

Trato de animar un MenuItem para ActionBar con una vista de acción de una manera simular a ActionBarHelper para Honeycomb tener un botón de actualización rotativa. Pero tengo dos problemas:

  1. Cuando muestro la vista de acción, el ancho del elemento es más pequeño que MenuItem (ver parte 1 y 2 de la captura de pantalla)
  2. Cuando quiero detener la animación y volver al estado predeterminado de MenuItem a través de setActionView (null), mi vista de acción todavía se muestra dentro de mi MenuItem (parte 3 de la captura de pantalla)

Diferentes pasos de MenuItem (Capturas de pantalla)

El diseño de ActionView (R.layout.menu_item_refresh) es:

<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="wrap_content" android:gravity="center"> <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/ic_menu_refresh" /> </LinearLayout> 

El código de los métodos onOptionsItemSelected es:

 @Override public boolean onOptionsItemSelected(MenuItem item) { switch(item.getItemId()){ default: return super.onOptionsItemSelected(item); case R.id.Menu_Feed_Refresh: mAnimatedItem = item; item.setActionView(R.layout.menu_item_refresh); item.startAnimation(mAnimation); load(); return true; } } 

Cuando la carga terminó, llamo a un manejador mAnimatedItem.setActionView (null)

Si i undestood su derecho de código, se aplica la animación a MenuItem. Usted elimina ActionView por setActionView(null) , pero menuItem anima.

Usted necesita conseguir la imagen de ActionView y aplicar la animación a ella:

 @Override public boolean onOptionsItemSelected(MenuItem item) { switch(item.getItemId()){ default: return super.onOptionsItemSelected(item); case R.id.Menu_Feed_Refresh: mAnimatedItem = item; item.setActionView(R.layout.menu_item_refresh); ImageView iv = (ImageView) item.getActionView().findViewById(R.id.refresh_image_id); iv.startAnimation(mAnimation); load(); return true; } } 

Llame a mAnimation.clearAnimation() cuando desee detenerse.

  • La barra de acciones no se muestra
  • Android 4.2.2 hace que el icono de la barra de acción y el título se puedan hacer clic como si formaran parte del mismo botón
  • ActionBar Compat no muestra el logotipo en Android 2.3.3
  • Implementación de tres acciones dentro de una única opción de menú en Android
  • ¿Puedo desactivar la navegación de ActionBar Spinner?
  • El botón Volver a la barra de acción no aparece en Android
  • Cómo utilizar SearchView en la barra de herramientas de Android
  • ¿Cómo expandir la lista de navegación en la barra de acción?
  • ¿Cómo configurar una vista personalizada en las pestañas de navegación de ActionBar y hacer que las pestañas se adapten a su altura?
  • Eventos de entrada de la barra de acción de Android
  • El desbordamiento no aparece en la barra de acciones
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.