2010-08-23 5 views
66

Meine Anwendung muss programmgesteuert eine kleine progressBar erstellen. ProgressBar hat keine Methode, um den Stil festzulegen (Ich möchte eine kleine progressBar). Der Konstruktor kann ein AttributeSet übernehmen, jedoch ist es eine Schnittstelle und erfordert, dass ich eine Reihe von Funktionen implementiere. Gibt es einen Weg , um die progressBar kleinen Stil zu setzen? (Ich kann nicht xml verwenden progressBar erstellen)Wie programmgesteuert eine ProgressBar erstellen?

Antwort

159

Die meiste Zeit, wenn Sie eine AttributeSet manuell zur Verfügung stellen, müssen Sie eines von Android verwenden. Glücklicherweise haben sie das Attributset offengelegt, das eine kleine Fortschrittsleiste beschreibt. Verwenden Sie diesen Code:

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

Dadurch sieht der Fortschrittsbalken statt des dünnen blauen (neuen) Balkens gelb und alt aus. –

+6

@kilaka nur für zukünftige Referenz, ändern Sie die android.R.attr.progressBarStyleSmall zu android.R.attr.progressBarStyleHorizontal für die neue :) – ElaGorilaki

+1

@BabyGorilla Und funktioniert progressBarStyleHorizontal auf allen Android-Version ?! –

9

erstellen Layout XML-Datei in res/Layout-Verzeichnis mit den gewünschten Fortschrittsbalken containig alle Attribute, die Sie brauchen:

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

Nächste in der Aktivitätsklasse können Sie ProgressBar Objekt von diesem Layout erstellen:

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

wo R.layout.small_progress_bar Links zu Ihrem Layout xML-Datei.

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

+123

er sagte programmgesteuert. –

+0

Anstatt manuell zu inflationieren, können Sie Ihre Inhaltsansicht auf diese Fortschrittsleiste setzen und das Layout ändern, sobald Ihre Daten geladen sind. – amalBit

-3

Voll Code für das Hinzufügen von Fortschrittsbalken programmatisch

private ProgressDialog mProgressDialog; 
    mProgressDialog = new ProgressDialog(this); 
    mProgressDialog.setMessage("Signing........"); 
    mProgressDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER); 
    mProgressDialog.setCancelable(false); 

Anruf unter Methode Leiste anzeigen

mProgressDialog.show(); 

Anruf unter der Stange zu verstecken

mProgressDialog.dismiss(); 
+1

Während dies ähnlich ist, ist dies ein ProgressDialog, keine ProgressBar. Das OP möchte möglicherweise keinen Dialog für seine Fortschrittsanzeige. – Parker

+0

Dieser ProgressDialog ist jetzt in Android 26 veraltet –