我正在尝试Progress Bar
从主 Activity 实例化 a 并将其动态添加到视图中。当我这样做时,我得到一个栏:
ProgressBar bar = new ProgressBar(this, null, android.R.attr.progressBarStyleHorizontal);
LayoutParams params = new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT);
bar.setLayoutParams(params);
bar.setId(mInt);
LinearLayout layout = (LinearLayout) findViewById(R.id.layout);
layout.addView(bar);
我开始了一个只包含上述代码的新项目,并且进度条正确显示。
如果我在上面的代码中添加以下行,屏幕会空白一秒钟,然后显示一个半满的栏。我希望看到一个空条,然后它会达到 50%。
try {
Thread.sleep(2000);
} catch ...{
}
bar.setProgress(50);
但是,如果我添加一些这样的代码,栏和更改会正确显示。
Button b = new Button(this);
b.setText("change bar");
b.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
changeProg();
}
});
public void changeProg() {
switch (state) {
case 0: bar.setProgress(100); state = 1; break;
case 1: bar.setProgress(127); state = 2; break;
case 2: bar.setProgress(33); state = 0; break;
}
}
如果我尝试使用循环自动执行该过程以changeProg()
每隔一段时间调用一次,那么屏幕将保持空白 - 根本不显示任何小部件,无论它们是由 XML 描述还是以编程方式进行描述都没有区别。
我无法理解为什么存在这种行为。