2010-08-21 19 views
7

Ich fragte mich, ob es einen Weg gab, einen benutzerdefinierten Titel mit meinem eigenen Zeichensatz zu versehen - und anschließend einen Fortschrittsbalken in das Titellayout einzufügen, so dass es wie der eingebaute Android-Fortschritt funktioniert Bar.Benutzerdefinierte Titelleiste mit Fortschritt in Android

In meinem Code - Ich möchte setProgressBarIndeterminateVisibility(true) aufrufen und die Fortschrittsanzeige in meiner benutzerdefinierten Titelleiste anzeigen lassen.

Ist das möglich?

Ich habe mein Anwendungsthema so eingerichtet, dass es einen benutzerdefinierten Titel verwendet - aber ich weiß nicht, wie oder wo ich den Fortschrittsbalken in dieses Layout einfügen soll.

Vielen Dank im Voraus.

EDIT: Im Moment benutze ich mein eigenes Thema, das so etwas wie folgt aussieht:

<style parent="android:Theme.Light.NoTitleBar" name="BaseTheme"> 
    <item name="android:windowBackground">@drawable/splash_bg</item> 
    <item name="android:windowTitleStyle">@style/TitleBackground</item> 
</style> 

Mit dem Titel Hintergrund Stil:

<style name="TitleBackground" parent="android:WindowTitleBackground"> 
    <item name="android:background">@drawable/title_bar</item> 
</style> 

jeder eine bessere Vorstellung zu geben - so etwas wie Dies. alt text

+0

Wenn Sie diesen Anruf durch einen anderen ersetzen kann, wäre für Sie das? da Sie CUSTOM_TITLE mit keiner anderen Titelfunktion haben können. – MahdeTo

+0

Ich meine, ich könnte einfach mein eigenes Layout erstellen und die '' verwenden, um meinen Titel auf jedem Bildschirm anzuzeigen - aber da ich die betreffende Methode nicht überschreiben kann, müsste ich eine andere Methode zum Ein- und Ausblenden meiner erstellen eigenen Fortschrittsbalken - und dann das in jeder Aktivität. Nun - jetzt, wo ich darüber nachdenke, könnte ich es in eine Klasse setzen und nur diese Klasse nennen, aber das ist noch mehr Arbeit, als ich gerne tun würde :). – hwrdprkns

Antwort

3

Ich glaube, der einzige Weg, es zu tun ist, Ihre eigene benutzerdefinierte Titelleiste zu verwenden. Sie könnten den Android-Code seit seiner Open Source überschreiben - aber das könnte eine schlechte Idee sein. Das beste, was zu tun ist, ist ein Titelleisten-Layout und nur <include /> in allen anderen Layouts zu machen und vielleicht eine Hilfsklasse zum Ein- und Ausblenden der Fortschrittsleiste. Hier

4

ist ein großartiges Beispiel dafür, wie eine benutzerdefinierte Titelleiste mit einer Fortschrittsanzeige zu implementieren:

http://downloadandroid.info/2010/08/creating-a-custom-titlebar/

Meine Lösung ist eine ActivityHelper Klasse zu haben, die Aktivität erstreckt und dieses Verfahren sowie einen um die Fortschrittsleiste ein- oder auszuschalten, dann erweitere diese Klasse von jeder meiner Aktivitäten.

12

diesen Code hinzufügen in onCreate vor jedem anderen Code:

requestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS); 
requestWindowFeature(Window.FEATURE_PROGRESS); 

setProgress(xx); // Then use this to update the progress to xx amount 

Zum Ein-/Aus-Einsatz

setProgressBarIndeterminateVisibility(false); //true to turn on. 

ich dies in einer Login-Aktivität verwendet haben, mein Problem ist, dass ich die meisten laufen der Anmeldung async, so dass ich Probleme beim Aktualisieren der Benutzeroberfläche habe. Aber ich bekomme die kreisförmige Fortschrittsanimation zur Anzeige.

Ich habe dies funktioniert auf einem TabActivity aktualisiert von einem Async-Aufruf innerhalb eines Activity Intent von der TabActivity gestartet. Ich musste die "requestWind ...." Zeilen sowohl in die TabActivity als auch in die aufgerufene Activity setzen. Auch ich habe festgestellt, dass die Verwendung von SetProgress nicht viel, aber die Spinner-Animation "drehte" sich die ganze Zeit, also bin ich glücklich.

+0

Funktioniert nicht auf HTc Wunsch und HTC wilrfire 2.2.2 – ozmank

Verwandte Themen