【问题标题】:Indeterminate progress in Android ActivityAndroid Activity 中的不确定进度
【发布时间】:2013-01-14 16:41:44
【问题描述】:
我正在尝试复制您在 ICS 中卸载应用程序时的体验。特别是标题栏下的不确定进度指示器。我尝试使用requestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS) 和Activity 上的各种方法,但无济于事。相反,它会在屏幕/标题栏的右上角显示一个旋转的进度条。我在这里错过了一些简单的东西吗?或者这完全是定制的?
这是我正在使用的代码:
@Override
protected void onCreate(Bundle savedInstanceState) {
requestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS);
super.onCreate(savedInstanceState);
setProgressBarIndeterminate(true);
setProgressBarIndeterminateVisibility(true);
}
【问题讨论】:
标签:
android
android-layout
【解决方案1】:
您正在使用ActionBar 不确定的进度条,但您正在寻找ProgressBar 视图。
您可以通过编程方式创建 View 或将其添加到布局文件中,例如 --
<ProgressBar
android:id="@+id/progressBar1"
style="?android:attr/progressBarStyleHorizontal"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:indeterminate="true" />
通常,您可以通过调用.setVisibility(View.VISIBLE) 来决定何时显示,并在完成后调用.setVisibility(View.GONE)。
如果您的 API 至少为 11,并将您的活动或应用主题设置为 @android:style/Theme.Holo,您将得到图片中显示的 ProgressBar。
如果您想在 API 11 之前的设备上获得类似的效果,请查看HoloEverywhere
【解决方案2】:
免责声明:@iagreen 的答案仍然是正确的——要获得类似于卸载活动中的布局,最好的选择是在布局中使用它,而不是依赖窗口 功能)
但是您在 Windows 功能方面走在了正确的轨道上,您只是将其中两个混合在一起。
看,这个:
setProgressBarIndeterminate(true);
请求窗口的[水平]进度条是不确定的。还有这个:
setProgressBarIndeterminateVisibility(true);
显示窗口的不确定的进度条——事实上,这是一个完全不同的视图。
为了进一步澄清,这将为您提供一个水平不确定的进度条,显示在窗口顶部
requestWindowFeature(Window.FEATURE_PROGRESS);
setProgressBarIndeterminate(true);
setProgressBarVisibility(true);
这会在操作栏中为您提供一个微调器样式的进度条
requestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS);
setProgressBarIndeterminateVisibility(true);
【解决方案3】:
那是图片中的水平进度条,Action Bar 不定进度条是 Spinner 样式。您要么需要为操作栏创建自定义视图,要么将其作为视图放在主布局中。您可以隐藏操作栏并为特定活动制作自定义标题。只需使用 Spinner 样式的不确定进度条,这是每个人都希望在 Action Bar 中看到的。