如何以编程方式创建ProgressBar?


77

我的应用程序需要以ProgressBar编程方式创建一个小文件。 ProgressBar没有设置样式的方法(我想要一个小的 ProgressBar)。构造函数可以采用AttributeSet,但是它是一个接口,需要我实现一组功能。有没有办法将ProgressBar样式设置为小样式?(我不能使用XML来创建 ProgressBar。)

Answers:


175

大多数情况下,如果您AttributeSet手动提供,则必须使用Android之一。幸运的是,他们公开了描述一个小的进度条的属性集。使用此代码:

progressBar = new ProgressBar(activity, null, android.R.attr.progressBarStyleSmall);

这使进度条看起来像是淡淡的和陈旧的,而不是细的蓝色(较新的)。
AlikElzin-kilaka

8
@kilaka仅供参考,将android.R.attr.progressBarStyleSmall更改为android.R.attr.progressBarStyleHorizo​​ntal,以供
新手使用

1
@BabyGorilla并且progressBarStyleHorizo​​ntal是否可以在所有android版本上使用?
Dr.jacky 2014年

3
@Neil Traft我尝试了这段代码,但是没有用。所以,我可以打电话给其他人显示吗?
阿卜杜勒哈米德·达班

2
@AbdulhamidDhaiban您必须将自己添加ProgressBar到一个ViewGrouplike LinearLayout,然后它才会出现在屏幕上。
CopsOnRoad '18

12

在res / layout目录中创建一个xml布局文件,并在其中包含所需的所有属性:

<?xml version="1.0" encoding="utf-8"?>
<ProgressBar
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="wrap_content"
  android:layout_height="wrap_content" ... />

接下来,在Activity类中,您可以从该布局创建ProgressBar对象:

LayoutInflater inflater = getLayoutInflater();
    ProgressBar bar = (ProgressBar ) inflater.inflate(R.layout.small_progress_bar, null);

其中R.layout.small_progress_bar链接到您的布局xml文件。

您还能不使用xml文件吗?


154
他以编程方式说。
马蒂·米勒

您可以将您的contentview设置为该进度条,而不用手动进行充气,并在查找数据后更改布局。
amalBit 2014年

0

Activity.java

  progressBar = (ProgressBar) findViewById(R.id.progressbar);
 `progressBar.setVisibility(View.VISIBLE);`// To Show ProgressBar 
 `progressBar.setVisibility(View.INVISIBLE);` //To Hide ProgressBar

检查这里 不推荐使用ProgressDialog。可以使用什么替代方法?


不确定,但是progressBar使其不可见后是否总是在后台运行(仅对UI隐藏)?
Shambhu

@Shambhu嗨,是,它将在后台运行...但是如果您将View.GONE移入背景,则它将不会在后台运行,因为对象已被移除...我希望这可以对您有所帮助
Gowthaman M
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.