Honeycomb の ActionBarHelper に似た方法でアクション ビューを使用して ActionBar の MenuItem をアニメーション化し、回転式の更新ボタンを表示しようとしました。しかし、私には2つの問題があります:
- アクション ビューを表示すると、アイテムの幅が MenuItem よりも小さくなります (スクリーンショットのパート 1 と 2 を参照)。
- アニメーションを停止し、setActionView(null) を介してデフォルトの MenuItem 状態に戻りたい場合、アクション ビューが MenuItem 内に表示されたままになります (スクリーンショットのパート 3)。
ActionView レイアウト (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>
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;
}
}
読み込みが完了したら、ハンドラ mAnimatedItem.setActionView(null) を呼び出します