2013-07-22 6 views
8

Ich versuche, ein progressbar in Code zu tun hinzuzufügen und es bestimmt machen:Wie wird Android ProgressBar im Code festgelegt?

progressBar = new ProgressBar(getActivity()); 
progressBar.setLayoutParams(layoutParams); 
parent.addView(progressBar, index); 
progressBar.setId(id.list_item_secondary); 
progressBar.setProgressDrawable(getResources().getDrawable(drawable.progress_horizontal)); 
progressBar.setIndeterminate(false); 
progressBar.setMax(100); 

Nach progressBar.setIndeterminate(false), isIndeterminate immer noch wahr ist und der Fortschritt hält den unbestimmten Kreis zeigt.

Wie kann ich es bestimmen?

Antwort

2

Von der ProgressBar Quellcode here, ist der Konstruktor Sie rufen in Zeile 237, die den Konstruktor in Zeile 241 ruft die wiederum den Konstruktor in Zeile 245 mit dem Stil ruft:

com.android.internal.R.attr.progressBarStyle 

Diese style hat das Attribut android: indeterminateOnly standardmäßig auf true gesetzt, so dass Ihre Aufrufe von setIndeterminate ignoriert werden. Siehe Funktionsbeschreibung in Zeile 433.

Ich habe dies nicht getan, aber ich nehme an, dass, wenn Sie rufen Sie den Konstruktor in Zeile 245 wie folgt aus:

progressBar = new ProgressBar(getActivity(), null, <Your Style ID>); 

als dritter Parameter mit android eine Stildefinition vorbei : unbestimmt Nur zu falsch sollte es funktionieren. Basierend auf dem Quellcode gehe ich davon aus, dass setIndeterminate nur vorhanden ist, um es zu aktivieren und nicht zu deaktivieren.

Hoffe, das hilft ...

+0

Kennen Sie einen solchen Stil im Android-Framework? –

+0

@kilaka Ich denke, dass android.R.style.Widget_ProgressBar_Horizontal wird den Job erledigen ... – Christos

+0

Es war nicht genug. Ich musste den Fortschritt drawbar setzen: 'progressBar.setProgressDrawable (getResources(). GetDrawable (android.R.drawable.progress_horizontal))' –

-1

Versuchen Sie auch mit setProgress(), die ein Ganzzahl-Argument zwischen Null und getMax() dauert.

+0

Bereits versucht es. Hat nicht funktioniert. Warum sollte das funktionieren? –

1

Es sieht nicht so aus, als würden Sie das style-Attribut der ProgressBar setzen. Von the docs für setIndeterminate():

Wenn dieser Stil unbestimmten Modus unterstützt nur den Fortschrittsbalken (wie die kreisförmigen Fortschrittsbalken), dann wird dies ignoriert.

Sie sollten den Stil manuell einstellen, z. über style="@android:style/Widget.ProgressBar.Horizontal". Einfach die Drawable zu ändern ist nicht genug.

+0

Wie kann ich den Stil der Fortschrittsleiste einstellen? –

+0

Sie können es wie folgt im Konstruktor setzen: http://Stackoverflow.com/a/3765577/752320 – Geobits

+0

Besser noch, verwenden Sie "style ="? Android: progressBarStyleHorizontal "', um den vorgegebenen Stil des Themas zu übernehmen. – nmr

0

Ihr Standard-ProgressBar-Stil hat android: indeterminateOnly auf True gesetzt. Sie können also den unbestimmten Status von ProgressBar nicht ändern. source code.

+0

Also wie kann ich es bestimmt machen? –

+0

Haben Sie die Quelle gesehen? Es gibt keine Möglichkeit) Verwenden Sie den richtigen Stil im Konstruktor. @Geobits hat Recht. – Leonidos