我想在按钮点击时进行处理时,在屏幕中央显示我的进度条。但我只想要没有对话框的进度条..
我有什么方法可以做到这一点吗?
答案 0 :(得分:23)
SDK中的ApiDemos全面解释了这一点。 您想要的示例名为:ProgressBar3.java,可以在\ ApiDemos \ src \ com \ example \ android \ apis \ view \
中找到此外,如果要删除对话框的边框以便只显示进度条,则可以将对话框本身定义为透明视图/叠加层(在示例中也会对此进行说明)。
答案 1 :(得分:22)
如果您不需要对话框,只需将progressBar放在布局中,就像任何其他视图项一样,并将默认情况下的可见性设置为“INVISIBLE”甚至“GONE”。
然后只需在代码中使用setVisibility将其更改为“VISIBLE”时显示它,并在任务完成后通过再次使其“INVISIBLE”或“GONE”重新隐藏它。
e.g。
MyTask {
// get handle on ProgressBar ViewItem defined in XML (id:progressBar)
ProgressBar progressBar = findViewById(R.id.progressBar);
//starting task, show progress bar
progressBar.setVisibility(View.VISIBLE);
// Do some stuff...
//task done, hide it again
progressBar.setVisibility(View.GONE);
}
这是一个简单版本,全部在UI线程中完成,但如果您使用异步任务或线程处理程序,这应该很容易适应。只需在UI线程中显示,隐藏和发布对话框的任何更新,并在后台执行长时间运行的任务。
答案 2 :(得分:3)
@reflog: 这不是我想要的。
@lostInTransit:
实现这一目标的正确方法如下:
就是这样。它适用于1.5至2.1的设备。没试过2.2。
-Yogesh
答案 3 :(得分:2)
@Jesse Finnerty的回答解决了我的问题。 我做的是:
private ProgressBar mprogressBar;
内部oncreate()就像我做的其他按钮和textviews一样, mprogressBar =(ProgressBar)findViewById(R.id.progressBar);
然后在我希望旋转轮出现的地方我发出命令
mprogressBar.setVisibility(View.VISIBLE);
在我希望它消失的地方。
mprogressBar.setVisibility(View.INVISIBLE);
这实际上是在切换下。这样当程序中的状态发生变化时,进度条会出现并消失
答案 4 :(得分:1)
有一个很好的例子可以做Yogesh的建议:
How to center progress indicator in ProgressDialog easily (when no title/text passed along)
信用证转到Macarse发布。