Android操作栏刷新动画 - 重复图标

时间:2014-07-04 10:10:58

标签: android xml

我按照这个问题的答案:link

但我在我的应用上得到了这个:

enter image description here

正如你在ActionBar右侧看到的那样,有两个刷新图标(当我拍摄截图时它们实际上是旋转的)。但我只想要一个人在那里。我很确定问题是其中一个是菜单XML文件中的项目,另一个是来自actionbar_inderterminate_progress.xml文件的ImageView。

这是我的menu.xml文件:

<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
tools:context="com.mypackage.android.design.appdesgin.MainActivity" >

<item android:id="@+id/action_search"
      android:title="Search"
      android:icon="@drawable/ic_action_search"
      android:showAsAction="always"
      android:actionViewClass="android.widget.SearchView"
      android:visible="false" />

<item android:id="@+id/action_create_local_backup"
      android:title="Search"
      android:icon="@drawable/ic_action_new"
      android:showAsAction="always"
      android:visible="false" />

<item
    android:id="@+id/action_refresh"
    android:icon="@drawable/ic_menu_refresh"
    android:showAsAction="always"
    android:title="Refresh">
</item>

<TextView
        android:id="@+id/status_text"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="center_horizontal"/>

这是我的actionbar_inderterminate_progress.xml

<?xml version="1.0" encoding="utf-8"?>
<ImageView 
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/indeterminate_progress"
style="@android:style/Widget.ActionButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:contentDescription="@string/app_name"
android:src="@drawable/ic_menu_refresh" />

我的动画XML文件:

<?xml version="1.0" encoding="utf-8"?>
<rotate xmlns:android="http://schemas.android.com/apk/res/android"
android:fromDegrees="0"
android:toDegrees="360"
android:pivotX="50%"
android:pivotY="50%"
android:duration="1000"
android:interpolator="@android:anim/accelerate_decelerate_interpolator" />

我的java代码:

@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
    inflater.inflate(R.menu.main, menu);
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
    case R.id.action_refresh:
        refreshItem = item;
        refresh();
        return true;
    default:
        return super.onOptionsItemSelected(item);
    }
}

public void refresh() {
     /* Attach a rotating ImageView to the refresh item as an ActionView */
     LayoutInflater inflater = (LayoutInflater) getActivity().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
     ImageView imageView = (ImageView) inflater.inflate(R.layout.refresh_button, null);

     Animation rotation = AnimationUtils.loadAnimation(getActivity(), R.animator.rotate_refresh);
     rotation.setRepeatCount(Animation.INFINITE);
     imageView.startAnimation(rotation);

     refreshItem.setActionView(imageView);
}

任何人都可以指出我在哪里以及我做错了什么才能让它只显示一个动画刷新按钮?

1 个答案:

答案 0 :(得分:0)

我正在两次刷新刷新按钮,一个在MyActivity类中,另一个在Fragment上需要刷新按钮。