Android Actionbar进度指示器和刷新按钮

Android Actionbar进度指示器和刷新按钮,android,android-actionbar,Android,Android Actionbar,是否可以显示进度指示器(使用requestWindowFeature(Window.FEATURE\u Undeterminate\u progress)代替刷新按钮显示的指示器 我们的想法是像Gmail客户端那样工作:当不加载show refresh button和加载show Undeterminate spinner代替refresh button时,您可以尝试以下方法:将refresh button和Undeterminate spinner都放在一个框架布局中,这样两个按钮就堆叠在z平

是否可以显示进度指示器(使用requestWindowFeature(Window.FEATURE\u Undeterminate\u progress)代替刷新按钮显示的指示器


我们的想法是像Gmail客户端那样工作:当不加载show refresh button和加载show Undeterminate spinner代替refresh button时,您可以尝试以下方法:将refresh button和Undeterminate spinner都放在一个
框架布局中,这样两个按钮就堆叠在z平面上,显示在同一位置在屏幕上。然后你只需玩可见性。当你想显示刷新按钮时,你可以将微调器设置为不可见,将按钮设置为可见。当你想显示微调器时,将其设置为可见,将按钮设置为不可见。

是的,这样做很容易

private MenuItem refresh;
.
.
.

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    getSupportMenuInflater().inflate(R.menu.options_menu, menu);

    // refresh menu item
    refresh = menu.findItem(R.id.refresh_option_item);

    return super.onCreateOptionsMenu(menu);
}
您必须获得如上所示的刷新菜单项,然后可以启用如下所示的旋转项:

refresh.setActionView(R.layout.actionbar_indeterminate_progress);
refresh.setActionView(null);
任务完成后,您可以禁用旋转,如下所示:

refresh.setActionView(R.layout.actionbar_indeterminate_progress);
refresh.setActionView(null);
最后,
actionbar\u undeterminate\u progress.xml
可以是这样的:

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="64dp"
    android:layout_height="wrap_content"
    android:gravity="center">
    <ProgressBar android:layout_width="32dp"
        android:layout_height="32dp"
        android:layout_gravity="center"
        style="?android:attr/indeterminateProgressStyle" />
</FrameLayout>


我知道如何手动布局,但我想在actionbar中这样做。我的答案对您有用吗?您甚至没有对此发表评论。:)是否可以使用广播目的进行交换?问题是,有时引用为空,您会得到npe。我不知道如何复制它,但它正在发生在我身上。我使用了与您相同的方法…最好使用refresh.collapseActionView()和expandActionView(),并在遇到此问题时设置操作视图:?android:attr/indendenceProgressStyle需要API级别11。有没有办法让这个解决方案适用于Api 10?我的问题是(我使用Galaxy Nexus),当它改变状态时,它会从左向右移动一点。有人遇到过这个问题吗?当目标API低于11时,请使用MenuItemCompat.setActionView()方法。