我有一个屏幕,上面有几个倒计时的计时器。每个 chrono 都有自己的代表在到达 0(开始已满)ProgressBar
之前还剩下多少。ProgressBar
这Activity
在 4 中效果很好Android
,但今天我在Android
2.3.6 中尝试过,有时ProgressBars
没有显示。
以下是一些用例,因此您可以了解它在哪些用例中无法正常工作。在所有情况下,都应显示 ProgressBar。
Activity
- 用户第一次打开,都ProgressBars
需要满不运行。ProgressBars
没有显示。
-一些 ProgressBars
开始运行(减少)。它们仍然没有显示。如果用户关闭app
并再次打开它,则会显示所有ProgressBars
内容(即使是已满的)。
- 当某些计时器达到 0 时,它ProgressBar
会再次被填充,并且其内部颜色变为红色。当这种情况发生时,它ProgressBar
也会消失。
有人知道为什么会这样吗?
这就是我ProgressBars
在我的 xml 中声明的方式:
<ProgressBar
android:id="@+id/lci_progbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_below="@+id/lci_time"
android:layout_centerHorizontal="true"
android:indeterminateDrawable="@android:drawable/progress_indeterminate_horizontal"
android:indeterminateOnly="false"
android:maxHeight="20dip"
android:minHeight="20dip"
android:paddingTop="5dp"
android:progressDrawable="@drawable/time_progressbar" />
这就是我在我的活动中所做的:
// Initialize progress bar.
progBars[i] = (ProgressBar) findViewById(ids[i]);
if (progBars[i].getAnimation() != null)
progBars[i].getAnimation().cancel();
if (arr_Chronometers[i].isCountingReverse()) {
// Chrono hasn't reached 0.
progBars[i].setMax((int) arr_Chronometers[i].doGetTotalTime());
progBars[i].setProgress((int) arr_Chronometers[i].doGetElapsedTime());
progBars[i].setProgressDrawable(getResources().getDrawable(
R.drawable.time_progressbar)); // Green bar
}
else {
// Chrono has reached 0.
progBars[i].setProgressDrawable(getResources().getDrawable(
R.drawable.time_progressbar_red)); // Red bar
progBars[i].setMax(100);
progBars[i].setProgress(100);
}
就像我说的,它适用于 Android 4(4.0.4 和 4.2),但不适用于 Android 2.3.6(我在几个设备和模拟器中尝试过)。
谢谢!