2012-05-03 7 views
9

Provo ad animare un MenuItem per ActionBar con una visualizzazione azioni in modo simile a ActionBarHelper for Honeycomb per avere un pulsante di aggiornamento rotativo. Ma ho 2 problemi:Android: setActionView (null) non rimuove i problemi di visualizzazione e larghezza su MenuItem con ActionView

  1. Quando visualizzo vista l'azione, la larghezza di voce è più piccolo di MenuItem (vedi parte 1 e 2 di screenshot)
  2. Quando ho voglia di smettere di animazione e tornare allo stato MenuItem di default via setActionView (nullo), ritengo azione viene ancora visualizzato all'interno della mia MenuItem (parte 3 Schermate)

Different steps of MenuItem (Screenshots)

ActionView layout (R.layout.menu_item_refresh) è:

<?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> 

codice metodi onOptionsItemSelected è:

@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; 
    } 
} 

Quando il carico finito, io chiamo un gestore mAnimatedItem.setActionView (null)

+1

Sei riuscito a risolvere questo? – user427969

risposta

0

se ho comprensione passa il codice a destra, si applica l'animazione di MenuItem. si elimina ActionView per setActionView(null), ma menuItem si anima.

è necessario per ottenere un'immagine da ActionView e applicare l'animazione a esso:

@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; 
    } 
} 
0

chiamata mAnimation.clearAnimation() quando si vuole fermare.

Problemi correlati