Wie erstelle ich eine ProgressBar programmgesteuert?

77

Meine Anwendung muss ProgressBarprogrammgesteuert eine kleine erstellen . ProgressBarhat keine Methode, um den Stil festzulegen (ich möchte einen kleinen ProgressBar). Der Konstruktor kann AttributeSetjedoch eine Schnittstelle verwenden und erfordert, dass ich eine Reihe von Funktionen implementiere. Gibt es eine Möglichkeit, das ProgressBarauf einen kleinen Stil einzustellen ? (Ich kann kein XML zum Erstellen verwenden ProgressBar.)

Arutha
quelle

Antworten:

175

Wenn Sie eine AttributeSetmanuell bereitstellen, müssen Sie meistens eine von Android verwenden. Glücklicherweise haben sie den Attributsatz angezeigt, der einen kleinen Fortschrittsbalken beschreibt. Verwenden Sie diesen Code:

progressBar = new ProgressBar(activity, null, android.R.attr.progressBarStyleSmall);
Neil Traft
quelle
Dadurch sieht der Fortschrittsbalken gelblich und alt aus, anstatt des dünnen blauen (neuartigen).
AlikElzin-Kilaka
8
@kilaka nur für zukünftige Referenz, ändern Sie die android.R.attr.progressBarStyleSmall in android.R.attr.progressBarStyleHorizontal für die neue :)
ElaGorilaki
1
@BabyGorilla Und funktioniert progressBarStyleHorizontal auf allen Android-Versionen?!
Dr.jacky
3
@Neil Traft Ich habe diesen Code ausprobiert, aber nicht funktioniert. Also, soll ich noch etwas anrufen, um es zu zeigen?
Abdulhamid Dhaiban
2
@AbdulhamidDhaiban Sie müssen Ihre ProgressBarzu einem ViewGroupLike hinzufügen LinearLayout, dann wird nur es auf dem Bildschirm angezeigt.
CopsOnRoad
12

Erstellen Sie eine Layout-XML-Datei im Verzeichnis res / layout mit dem gewünschten Fortschrittsbalken, der alle erforderlichen Attribute enthält:

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

Als Nächstes können Sie in der Aktivitätsklasse ein ProgressBar-Objekt aus diesem Layout erstellen:

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

Dabei verweist R.layout.small_progress_bar auf Ihre Layout-XML-Datei.

Können Sie die XML-Datei immer noch nicht verwenden?

Plugmind
quelle
154
sagte er programmatisch.
Marty Miller
Anstatt manuell aufzublasen, können Sie Ihre Inhaltsansicht auf diesen Fortschrittsbalken setzen und das Layout ändern, sobald Ihre Daten gespeichert sind.
AmalBit
0

Activity.java

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

Überprüfen Sie hier, ob ProgressDialog veraltet ist. Welche Alternative ist zu verwenden?

Gowthaman M.
quelle
Sie sind sich nicht sicher, aber wird die progressBar immer im Hintergrund ausgeführt (nur vor der Benutzeroberfläche verborgen), nachdem sie unsichtbar gemacht wurde?
Shambhu
@Shambhu hi ,,, ja, es wird im Hintergrund ausgeführt ... aber wenn Sie View.GONE erstellen , wird es nicht auch im Hintergrund im Vordergrund ausgeführt, da das Objekt entfernt wurde ... Ich hoffe, dies kann Ihnen helfen
Gowthaman M