2012-05-03 12 views
9

Próbuję ożywić element MenuItem dla ActionBar z widokiem akcji w sposób podobny do ActionBarHelper for Honeycomb, aby mieć obrotowy przycisk odświeżania. Ale mam 2 problemy:Android: setActionView (null) nie usuwa problemów z widokiem i szerokością w MenuItem z ActionView

  1. Kiedy wyświetlić widok Akcja, szerokość elementu jest mniejszy niż MenuItem (patrz część 1 i 2 zdjęcie)
  2. Kiedy chcę zatrzymać animację i powrócić do domyślnego stanu MENUITEM poprzez setActionView (null), moim zdaniem akcja jest nadal wyświetlany w moim MenuItem (część 3 zrzucie)

Different steps of MenuItem (Screenshots)

actionView Layout (R.layout.menu_item_refresh) wynosi:

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

onOptionsItemSelected metody kod jest:

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

Po zakończeniu obciążenia wzywam programu obsługi mAnimatedItem.setActionView (null)

+1

Czy byłeś w stanie to rozwiązać? – user427969

Odpowiedz

0

gdybym undestood swój właściwy kod, zastosować animację do MenuItem. usuwasz ActionView przez setActionView(null), ale menuItem animuje się.

trzeba uzyskać obraz z actionView i zastosować animację do niego:

@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

połączenia mAnimation.clearAnimation() gdy chcesz się zatrzymać.

Powiązane problemy