是否可以显示进度指示器(使用requestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS)显示的进度指示器代替刷新按钮?
这个想法是像Gmail客户端一样工作:当没有加载show refresh按钮时和加载时显示刷新按钮位置的不确定微调器
答案 0 :(得分: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);
}
您必须获得上面的刷新菜单项,然后,您可以启用如下所示的旋转项目:
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>
答案 1 :(得分:0)
您可以尝试以下操作:将刷新按钮和不确定的微调器放在 FrameLayout
内,这样两个堆叠在z平面上,显示在屏幕上的相同位置。然后你只需要玩Visibility。如果要显示刷新按钮,可以将微调器设置为不可见,将按钮设置为可见。如果要显示微调器,请将其设置为可见,将按钮设置为不可见。