Aktualisieren Sie die Animation der Menüelemente in ActionBarSherlock

public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {

    case android.R.id.home:
        return true;

    case R.id.searchIcon:
        return true;

    case R.id.startRefresh:
        refreshItem = item;
        refresh();
        return true;
    case R.id.stopRefresh:

        if (refreshItem != null && refreshItem.getActionView() != null) {
            refreshItem.getActionView().clearAnimation();
            refreshItem.setActionView(null);
        }
        return true;
    default:
        return super.onOptionsItemSelected(item);
    }
}


public void refresh() {
    if (FeedActivity.this != null) {
        /*
         * Attach a rotating ImageView to the refresh item as an ActionView
         */
        LayoutInflater inflater = (LayoutInflater) FeedActivity.this
                .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        ImageView iv = (ImageView) inflater.inflate(
                R.layout.refresh_action_view, null);
        Animation rotation = AnimationUtils.loadAnimation(
                FeedActivity.this, R.anim.clockwise_refresh);
        rotation.setRepeatCount(Animation.INFINITE);
        iv.startAnimation(rotation);
        refreshItem.setActionView(iv);
    }
}

Vor dem Klicken:

Nach dem Klicken:

Hier wird das Icon animiert (rotierend).

Problem:

warum verschiebt es sich nach links?

Sobald es nach links verschoben wird, kann das Symbol nicht mehr angeklickt werden und seltsamerweise funktioniert auch die Zurück-Taste des Geräts nicht mehr

BEARBEITEN:

In Kommentaren unter dieser Antwort:

Animiertes Icon für ActionItem

Jake Warton sagt, wenn Sie ein quadratisches Symbol mit der richtigen Größe für den Menüeintrag verwenden, werden Sie dieses seltsame Verhalten nicht an jemanden weitergeben, der das gleiche Problem hat.

Aber ich verwende ein 32x32-Bild auf einem Gerät, das mdpi drawables verwendet. Was da wie gesagt klappen muss :(

Danke dir

BEARBEITEN:

refresh_action_view.xml

<?xml version="1.0" encoding="utf-8"?>
<ImageView xmlns:android="http://schemas.android.com/apk/res/android"
    style="@style/Widget.Sherlock.ActionButton"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:src="@drawable/ic_refresh" />

Benutzerdefinierter Stil, den ich in meiner App verwende

<style name="My_solid_ActionBar" parent="@style/Widget.Sherlock.Light.ActionBar.Solid.Inverse">
    <item name="background">@drawable/ab_solid_My</item>
    <item name="backgroundStacked">@drawable/ab_stacked_solid_My</item>
    <item name="backgroundSplit">@drawable/ab_bottom_solid_My</item>
    <item name="progressBarStyle">@style/My_ProgressBar</item>
    <item name="android:background">@drawable/ab_solid_My</item>
    <item name="android:backgroundStacked">@drawable/ab_stacked_solid_My</item>
    <item name="android:backgroundSplit">@drawable/ab_bottom_solid_My</item>
    <item name="android:progressBarStyle">@style/My_ProgressBar</item>
</style>

Antworten auf die Frage(2)

Ihre Antwort auf die Frage