是否可以在刷新按钮的位置显示进度指示器(使用requestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS)显示的那个)?
想法是像Gmail客户端一样工作:当不加载时显示刷新按钮,当加载时在刷新按钮的位置显示不确定的旋转指示器。
是否可以在刷新按钮的位置显示进度指示器(使用requestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS)显示的那个)?
想法是像Gmail客户端一样工作:当不加载时显示刷新按钮,当加载时在刷新按钮的位置显示不确定的旋转指示器。
是的,你可以这样轻松地做到。
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>
FrameLayout
里,这样两个元素就可以在屏幕上的同一位置重叠显示。然后你只需要控制它们的可见性。当你想要显示刷新按钮时,将进度圈设置为不可见并将按钮设置为可见。当你想要显示进度圈时,将其设置为可见并将按钮设置为不可见。