Wie stelle ich die Höhe des Android-Fortschrittsbalkens ein?

Lesezeit: 4 Minuten

Benutzer-Avatar
Tom Xue

Mein activity_main.xml Unten ist, wie Sie sehen, die Höhe 40 Dip eingestellt.

Und in MyEclipse sieht es so aus:

Geben Sie hier die Bildbeschreibung ein

Aber wenn ich es auf meinem Handy ausführe, sieht es so aus:

Geben Sie hier die Bildbeschreibung ein

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″

    – Parthan_akon

    20. November 2020 um 7:32 Uhr

android:scaleY=”8″ in Ihrer XML-Datei

Benutzer-Avatar
Vincent Mimoun-Prat

Aus dieses Tutorial:

<style name="CustomProgressBarHorizontal" parent="android:Widget.ProgressBar.Horizontal">
      <item name="android:progressDrawable">@drawable/custom_progress_bar_horizontal</item>
      <item name="android:minHeight">10dip</item>
      <item name="android:maxHeight">20dip</item>
</style>

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/…

    – Ashutosh Tiwari

    22. August 2019 um 9:31 Uhr


Benutze das

style="@android:style/Widget.ProgressBar.Horizontal"

Benutzer-Avatar
Gabriele Marotti

Du kannst den … benutzen LinearProgressIndicator bereitgestellt von der Material Components Library und der app:trackThickness Attribut:

<com.google.android.material.progressindicator.LinearProgressIndicator
    android:indeterminate="true"
    app:trackThickness="xxdp"
    ../>

Mit 12dp:

Geben Sie hier die Bildbeschreibung ein

Mit 4dp:

Geben Sie hier die Bildbeschreibung ein

Notiz: es erfordert mindestens die Version 1.3.0-alpha04.

Benutzer-Avatar
Gemeinschaft

Wie in anderen Antworten erwähnt, sieht es so aus, als würden Sie den Stil Ihres Fortschrittsbalkens so einstellen, dass er Holo.Light verwendet:

style="@android:style/Widget.Holo.Light.ProgressBar.Horizontal"

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.

style="@android:style/Widget.ProgressBar.Horizontal"

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:
25 Dip-Höhen-Fortschrittsbalken

max/min auf 100 eingestellt dip:
100 Dip-Höhen-Fortschrittsbalken

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:

9-Patch

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

Benutzer-Avatar
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"

1298890cookie-checkWie stelle ich die Höhe des Android-Fortschrittsbalkens ein?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy