24

是否可以显示进度指示器(使用 requestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS) 代替刷新按钮显示的进度指示器?

这个想法是像 Gmail 客户端一样工作:当不加载时显示刷新按钮和加载时显示不确定的微调器代替刷新按钮

4

2 回答 2

53

是的,您可以通过这种方式轻松完成。

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);

最后,actionbar_indeterminate_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>
于 2012-09-03T21:24:02.610 回答
0

您可以尝试以下操作:将刷新按钮和不确定微调器都放在 a FrameLayout中,这样两者就堆叠在 z 平面上,显示在屏幕上的相同位置。然后你只需要使用可见性。如果要显示刷新按钮,请将微调器设置为不可见,将按钮设置为可见。如果要显示微调器,请将其设置为可见,将按钮设置为不可见。

于 2012-08-05T14:49:58.683 回答