Wie stelle ich die Höhe des Android-Fortschrittsbalkens ein?
Lesezeit: 4 Minuten
Tom Xue
Mein activity_main.xml Unten ist, wie Sie sehen, die Höhe 40 Dip eingestellt.
Und in MyEclipse sieht es so aus:
Aber wenn ich es auf meinem Handy ausführe, sieht es so aus:
Meine Frage ist also, warum die tatsächliche Höhe des Fortschrittsbalkens nicht die ist, die ich eingestellt habe? Wie erhöht man die Höhe des Fortschrittsbalkens?
progressBar.setScaleY(2f); Ganzzahl steht für Höhe
– subramanyam chodi
26. Dezember 2016 um 6:35 Uhr
Ich denke die einfachste Lösung wäre:
mProgressBar.setScaleY(3f);
Tatsächlich ist dies die einzige Lösung. Danke für das Teilen
– Jahrzehnte
22. April 2016 um 20:52 Uhr
Diese Antwort, bei nur 4f, machte meinen Balken unerträglich verschwommen, fast so, als hätte er einen Glühstil darauf.
– jenseits des Tealen
14. November 2016 um 23:09 Uhr
@beyondtheteal hehe, aber die Höhe hat sich tatsächlich geändert, oder? Ich verstehe also nicht, warum Sie die Antwort ablehnen. Wenn Sie einen stark skalierten Balken benötigen, können Sie Ihren eigenen “CustomProgressBar” erstellen.
– Martin Pfeffer
16. November 2016 um 11:50 Uhr
Beachten Sie, dass Sie, wenn Sie etwas darauf zeichnen (z. B. einen Kreis), eine skalierte Version davon erhalten (z. B. Ellipsen).
– pushandpop
6. Mai 2019 um 14:46 Uhr
einfache Lösung, schön.. Sie können auch direkt hinzufügen – android:scaleY=”3″
Wenden Sie den Stil dann einfach auf Ihre Fortschrittsbalken an oder besserüberschreiben Sie den Standardstil in Ihrem Design, um alle Fortschrittsbalken Ihrer App automatisch zu gestalten.
Der Unterschied, den Sie in den Screenshots sehen, liegt daran, dass die Telefone/Emulatoren eine andere Android-Version verwenden (neueste ist das Design von ICS (Holo), oben ist das ursprüngliche Design).
Verwenden Sie diesen Stil.. style=”@android:style/Widget.Holo.Light.ProgressBar.Small.Inverse” . es hat bei mir funktioniert
– Sudharsan Chandrasekaran
26. Mai 2016 um 7:03 Uhr
Hier ist eine kostenlose Alternative zu diesem custom_progress_bar_horizontal drawable: stackoverflow.com/questions/16893209/…
Wenn dies auf Ihrem Telefon ausgeführt wird, handelt es sich wahrscheinlich um ein Gerät der Version 3.0+. Ihr Emulator sieht jedoch so aus, als würde er einen “Standard” -Fortschrittsbalken verwenden.
Vielleicht haben Sie den Stil zwischen dem Erstellen der Screenshots auf den “Standard” -Fortschrittsbalken geändert? Leider kehren 2.x-Geräte nicht automatisch zum “Standard”-Fortschrittsbalken zurück, wenn Ihr Projekt einen Holo.Light-Fortschrittsbalken verwendet. Es wird einfach abstürzen.
Wenn Sie wirklich den Standard-Fortschrittsbalken verwenden, funktioniert die Einstellung der maximalen/minimalen Höhe wie vorgeschlagen gut. Wenn Sie jedoch die Holo.Light- (oder Holo-) Leiste verwenden, funktioniert die Einstellung der max./min. Höhe nicht. Hier ist eine Beispielausgabe von der Einstellung der max./min. Höhe auf 25 und 100 Dip:
max/min eingestellt auf 25 dip:
max/min auf 100 eingestellt dip:
Sie können sehen, dass das zugrunde liegende Drawable (progress_primary_holo_light.9.png) nicht wie erwartet skaliert wird. Der Grund dafür ist, dass der 9-Patch-Rand nur die oberen und unteren paar Pixel skaliert:
Der horizontale Bereich, der von dem schwarzen Rand mit einem Pixel (grüne Pfeile) begrenzt wird, ist der Teil, der gestreckt wird, wenn Android die Größe der .png-Datei vertikal ändern muss. Der Bereich zwischen den beiden roten Pfeilen wird nicht vertikal gestreckt.
Die beste Lösung, um dies zu beheben, besteht darin, die 9patch .pngs zu ändern, um die Leiste und nicht den “Leinwandbereich” zu strecken, und dann eine benutzerdefinierte Fortschrittsbalken-XML zu erstellen, um diese 9patches zu verwenden. Ähnlich hier beschrieben: https://stackoverflow.com/a/18832349
Hier ist meine Implementierung für nur eine nicht-indeterminante Holo.Light ProgressBar. Sie müssen Ihre eigenen 9-Patches für unbestimmte und Holo-ProgressBars hinzufügen. Idealerweise hätte ich den Leinwandbereich vollständig entfernen sollen. Stattdessen habe ich es aber gelassen, den “Balken”-Bereich dehnbar einzustellen. https://github.com/tir38/ScalingHoloProgressBar
IgniteCoders
Viele Lösungen hier mit vielen Upvotes haben für mich nicht funktioniert, selbst die akzeptierte Antwort. Ich habe es gelöst, indem ich scaleY eingestellt habe, aber es ist keine gute Lösung, wenn Sie zu viel Höhe benötigen, da das Drawable verpixelt ist.
Programmatisch:
progressBar.setScaleY(2f);
XML-Layout:
android:scaleY="2"
12988900cookie-checkWie stelle ich die Höhe des Android-Fortschrittsbalkens ein?yes
progressBar.setScaleY(2f); Ganzzahl steht für Höhe
– subramanyam chodi
26. Dezember 2016 um 6:35 Uhr