如何让Android ProgressBar在代码中确定?

时间:2013-07-22 15:01:43

标签: android android-progressbar

我正在尝试在代码中添加进度条并使其确定:

progressBar = new ProgressBar(getActivity());
progressBar.setLayoutParams(layoutParams);
parent.addView(progressBar, index);
progressBar.setId(id.list_item_secondary);
progressBar.setProgressDrawable(getResources().getDrawable(drawable.progress_horizontal));
progressBar.setIndeterminate(false);
progressBar.setMax(100);

progressBar.setIndeterminate(false)之后,isIndeterminate仍为真,进度保持显示不确定的圈子。

如何确定?

4 个答案:

答案 0 :(得分:2)

从ProgressBar源代码here,你正在调用的构造函数在第237行,它在第241行调用构造函数,而第241行又使用样式调用第245行中的构造函数:

com.android.internal.R.attr.progressBarStyle

默认情况下,此样式的属性android:indeterminateOnly设置为true,因此忽略对setIndeterminate的调用。请参阅第433行的功能说明。

我还没有这样做但我假设如果你在第245行调用构造函数:

progressBar = new ProgressBar(getActivity(), null, <Your Style ID>);

将android:indeterminateOnly的样式定义作为第三个参数传递给false它应该可以工作。根据源代码,我假设setIndeterminate仅用于启用它而不是禁用它。

希望这会有所帮助......

答案 1 :(得分:1)

看起来您没有设置ProgressBar的样式属性。来自setIndeterminate()的{​​{1}}:

  

如果此进度条的样式仅支持不确定模式(例如循环进度条),则将忽略此项。

你应该手动设置样式,例如通过style="@android:style/Widget.ProgressBar.Horizontal"。仅仅更改Drawable是不够的。

答案 2 :(得分:0)

您的默认ProgressBar样式将android:indeterminateOnly设置为true。所以你不能改变ProgressBar的不确定状态。 source code.

答案 3 :(得分:-1)

还尝试使用setProgress(),它在0和getMax()之间采用整数参数。