我正在尝试在代码中添加进度条并使其确定:
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
仍为真,进度保持显示不确定的圈子。
如何确定?
答案 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()
之间采用整数参数。