2012-05-03 20 views
9

Tôi cố gắng tạo hoạt ảnh cho MenuItem cho ActionBar bằng chế độ xem hành động theo cách mô phỏng thành ActionBarHelper for Honeycomb để có nút làm mới xoay. Nhưng tôi có 2 khó khăn:Android: setActionView (null) không loại bỏ sự cố chế độ xem và độ rộng trên MenuItem với ActionView

  1. Khi tôi hiển thị xem hành động, chiều rộng mặt hàng nhỏ hơn MenuItem (xem phần 1 và 2 của ảnh chụp màn hình)
  2. Khi tôi muốn dừng hình ảnh động và trở về mặc định nhà nước MenuItem qua setActionView (null), xem hành động của tôi vẫn còn hiển thị bên trong MenuItem của tôi (phần 3 của ảnh chụp màn hình)

Different steps of MenuItem (Screenshots)

ActionView Layout (R.layout.menu_item_refresh) là:

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

phương pháp onOptionsItemSelected code is:

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

Khi tải xong, tôi gọi một handler mAnimatedItem.setActionView (null)

+1

Bạn có thể giải quyết vấn đề này không? – user427969

Trả lời

0

nếu tôi undestood đúng mã của bạn, bạn áp dụng hình ảnh động để MenuItem. bạn xóa ActionView theo setActionView(null), nhưng hoạt ảnh menuItem.

bạn cần để có được hình ảnh từ ActionView và áp dụng hình ảnh động với nó:

@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

Gọi mAnimation.clearAnimation() khi bạn muốn dừng lại.

Các vấn đề liên quan