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)

2 Solutions collect form web for “Android: setActionView (null) no elimina problemas de vista y anchura en MenuItem con ActionView”

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 superposición de la barra de acciones no funciona como se esperaba
  • Cómo forzar el icono de desbordamiento de barra de acción para mostrar
  • Android: Icono de búsqueda que no se muestra en la barra de acciones
  • Cambiar la barra de acción color del título Theme.AppCompat.Light.DarkActionBar android
  • Barra de Acción de Android
  • Cómo eliminar la flecha izquierda de la barra de acción en android?
  • ¿Cómo expandir la lista de navegación en la barra de acción?
  • Cómo ocultar la barra de acción para el fragmento?
  • Cómo cambiar el color de texto de ActionBar en Android 5.0 Lollipop?
  • ¿En qué anchura de la pantalla del dp la barra de la acción no se divide cuando android: uiOptions = "splitActionBarWhenNarrow" se fija?
  • Eventos de entrada de la barra de acción de Android
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.