操作栏进度指示器和刷新按钮

luj*_*jop 24 android android-actionbar

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

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

tas*_*iac 52

是的,你可以通过这种方式轻松完成.

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);
}
Run Code Online (Sandbox Code Playgroud)

您必须获得上面的刷新菜单项,然后,您可以启用如下所示的旋转项:

refresh.setActionView(R.layout.actionbar_indeterminate_progress);
Run Code Online (Sandbox Code Playgroud)

当你的任务完成后,你可以像下面那样禁用旋转:

refresh.setActionView(null);
Run Code Online (Sandbox Code Playgroud)

最后,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>
Run Code Online (Sandbox Code Playgroud)

  • 最好使用refresh.collapseActionView()和expandActionView()并将动作视图设置一次 (5认同)
  • 我的问题是(我使用Galaxy Nexus),当它改变状态时,它会从左向右移动一点.有没有人有这个问题? (3认同)
  • 我遇到了这个问题:?android:attr/indeterminateProgressStyle需要API级别11.有什么方法可以让这个解决方案适用于Api 10? (2认同)
  • 在将目标API定位到11以下时,请使用MenuItemCompat.setActionView()方法. (2认同)

And*_*ani 0

您可以尝试以下操作:将刷新按钮和不确定微调器都放在 a 内 FrameLayout,以便两者堆叠在 z 平面上,显示在屏幕上的相同位置。然后你只需要玩弄可见性。当您想要显示刷新按钮时,您可以将微调器设置为不可见,并将按钮设置为可见。当您想要显示微调器时,请将其设置为可见,将按钮设置为不可见。

  • 我的回答对你有用吗?你甚至没有对此发表评论。:) (2认同)