77

My application needs to create a small ProgressBar programmatically. ProgressBar doesn't have a method to set the style (I want a small ProgressBar). The constructor can take an AttributeSet, however, it is an interface and requires me to implement a set of functions. Is there a way to set the ProgressBar to a small style? (I can't use XML to create ProgressBar.)

0xCursor
  • 2,224
  • 4
  • 13
  • 30
Arutha
  • 24,390
  • 25
  • 64
  • 80

3 Answers3

176

Most of the time if you provide an AttributeSet manually you have to use one of Android's. Luckily, they've exposed the attribute set that describes a small progress bar. Use this code:

progressBar = new ProgressBar(activity, null, android.R.attr.progressBarStyleSmall);
Neil Traft
  • 16,833
  • 15
  • 58
  • 68
12

Create a layout xml file in res/layout directory with desired progress bar containig all attributes you need:

<?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" ... />

Next in the Activity class you can create ProgressBar object from that layout:

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

where R.layout.small_progress_bar links to your layout xml file.

Can you still not use xml file?

Jonno
  • 1,352
  • 3
  • 20
  • 36
plugmind
  • 7,697
  • 4
  • 31
  • 38
  • Instead of inflating manually, you can setYour contentview to this progressbar and change the layout once your data are loded. – amalBit Apr 08 '14 at 12:23
0

Activity.java

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

Check here ProgressDialog is deprecated.What is the alternate one to use?

Gowthaman M
  • 6,996
  • 7
  • 27
  • 51
  • Not sure, but does the progressBar run always in background(just hidden from the UI) after making it invisible? – Shambhu May 15 '18 at 06:45
  • @Shambhu hi,,,yes it will be run in background...but if you make **View.GONE** it will not run in background as well foreground because object is removed...i hope this may help you – Gowthaman M May 15 '18 at 07:54