Standardmäßig hat die ProgressBar eine bestimmte Polsterung über und unter der Leiste. Gibt es eine Möglichkeit, diese Polsterung zu entfernen, um nur die Stange am Ende zu haben?
android
android-progressbar
abergmeier
quelle
quelle
maxHeight
, funktioniert die Einstellung nicht.android:minHeight="4dp"
Antworten:
Ich verwende Folgendes als Problemumgehung für dieses Problem.
quelle
android:layout_marginTop="-6dp"
arbeitete für mich. Frage mich, ob es vom Gerät abhängig ist? Ich habe nur auf Xperia Z1Framelayout
(wie in dieser Antwort ist bessere Lösung und nicht abhängig von Telefongröße / Typ /So habe ich Juozas 'Antwort verwendet:
Höhe von mir
ProgressBar
ist 4dp. Also habe ich einFrameLayout
mit Höhe 4dp erstellt und daslayout_gravity
vonProgressBar
auf gesetztcenter
. Es funktioniert wie ein Zauber.quelle
Am Ende habe ich eine benutzerdefinierte Bibliothek verwendet, um dieses Problem zu lösen. Die meisten anderen Lösungen funktionieren, aber die Ergebnisse sind auf verschiedenen Geräten nicht konsistent.
So fügen Sie eine Gradle-Abhängigkeit hinzu:
So fügen Sie Ihrem Layout eine ProgressBar ohne Eigenauffüllung hinzu:
app:mpb_useIntrinsicPadding="false"
macht den Trick. Weitere Informationen finden Sie auf der GitHub-Seite .quelle
Wenn jemand noch Hilfe benötigt, kann er dies versuchen:
Hier befindet sich der Fortschrittsbalken im ConstraintLayout , und die Attribute ConstraintTop_toTopOf und ConstraintBottom_toTopOf müssen auf dasselbe Element angewendet werden (in diesem Fall handelt es sich um eine Richtlinie).
quelle
Es ist möglich, vertikal zentrierte ProgressBar in einem übergeordneten Element zu zeichnen, das die Polsterung abschneidet. Da ProgressBar sich nicht größer als das übergeordnete Element zeichnen kann, müssen wir ein großes übergeordnetes Element erstellen, um es in einer Schnittansicht zu platzieren.
quelle
Um die vertikale Polsterung von zu entfernen
ProgressBar
, können Sie dies tunProgressBar
Beispiel enthält 1 wrap_content
ProgressBar
, 1 8dpProgressBar
, 1 100dpProgressBar
quelle
Eine vollständige Lösung für dieses Problem wäre wie folgt. Nur für den Fall, dass jemand Codefragmente benötigt, habe ich dies getan.
Hier ist die progress_indeterminate_horizontal_holo.xml
Stilressourcen in meine lokale Stildatei kopiert.
Und schließlich setzen Sie die minimale Höhe in meiner lokalen Layoutdatei auf 4 dp.
quelle
<your-sdk-folder>/platforms/android-17/data/res/drawable-hdpi/
Ich habe das gleiche Problem bei der Verwendung des Fortschrittsbalkens mit horizontalem Stil festgestellt.
Die Hauptursache ist, dass der Standard-9-Patch, der für den Fortschrittsbalken gezeichnet werden kann: (progress_bg_holo_dark.9.png) einige vertikale transparente Pixel als Auffüllung enthält.
Die endgültige Lösung, die für mich funktioniert hat: Passen Sie den Zeichnungsfortschritt und meinen Beispielcode wie folgt an:
custom_horizontal_progressbar_drawable.xml
Layout-Snippet:
quelle
Ein Trick besteht darin, Ihrem Fortschrittsbalken negative Ränder hinzuzufügen.
Unten finden Sie ein Beispiel für den XML-Code, vorausgesetzt, er befindet sich oben auf Ihrem Bildschirm:
quelle
Subins Antwort scheint die einzige zu sein, die (derzeit) kein fragiler Hack ist, der in zukünftigen Versionen der Android ProgressBar beschädigt werden kann.
Aber anstatt mir die Mühe zu machen, die Ressourcen aufzubrechen, zu ändern und auf unbestimmte Zeit zu warten, habe ich mich für die MaterialProgressBar-Bibliothek entschieden , die das für uns erledigt:
In build.gradle:
Dieses Projekt hat eine schöne Demo , die die Unterschiede zwischen ihm und der eingebauten ProgressBar zeigt.
quelle
Wenn noch jemand nach einer Lösung sucht, überprüfen Sie diesen Kommentar
Stellen Sie die Mindesthöhe auf 4 dp ein
- -
quelle
Ich benutze minHeight und maxHeigh. Es hilft für verschiedene API-Versionen.
Es muss beides verwenden. Api 23 funktioniert gut mit
Niedrigere API-Versionen erhöhen in diesem Fall jedoch die Höhe des Fortschrittsbalkens auf maxHeight.
quelle
Versuche Folgendes:
... und konfigurieren Sie dann den Fortschrittsbalken nach Ihren Wünschen, da zunächst ein mittelgroßer Balken mit einem gelben Fortschrittsfarbton und einem grauen Fortschrittshintergrund angezeigt wird. Beachten Sie auch, dass keine vertikale Polsterung vorhanden ist.
quelle
Verwenden Sie diese Option in Linearlayout
quelle
Das Hinzufügen von android: progressDrawable zu einer in drawable definierten Ebenenliste hat das Problem für mich behoben. Es funktioniert, indem die Fortschrittsleiste in einer benutzerdefinierten Zeichenleiste maskiert wird
Beispielimplementierung unter https://stackoverflow.com/a/4454450/1145905
quelle
Ich benutze
style="@style/Widget.AppCompat.ProgressBar.Horizontal"
und es war ziemlich einfach, die Ränder loszuwerden. Dieser Stil ist:Ich habe gerade die minimale / maximale Höhe überschrieben:
quelle
Es ist nicht erforderlich, ein neues Modul herunterzuladen oder ein FrameLayout um Ihre Fortschrittsleiste zu legen. Dies sind alles nur Hacks. Nur 2 Schritte:
In Ihrer Whatever.xml
progress_horizontal.xml, Ändern Sie die Werte nach Ihren Wünschen.
Mögen Sie die abgerundeten Ecken nicht?
Eckenradius entfernen
Magst du die Farben nicht? Ändern Sie die Farben usw. Fertig!
Im Allgemeinen sind dies die Schritte, um den Code von allem zu ändern, was Ihnen nicht gefällt. Finden Sie einfach den Quellcode und finden Sie heraus, was Sie ändern müssen. Wenn Sie dem ProgressBar-Quellcode folgen, finden Sie eine Datei namens progress_horizontal.xml, auf die verwiesen wird. Grundsätzlich, wie ich alle meine XML-Probleme löse.
quelle
quelle
quelle
Verwenden Sie einfach Material ProgressIndicator, der keinen versteckten Rand hat.
quelle
Eine einfache No-Tricks-Lösung, die mit jeder Android-Version kompatibel ist und keine externen Bibliotheken benötigt, fälscht
ProgressBar
zwei imViews
InnerenLinearLayout
. Damit bin ich gelandet. Sieht ziemlich ordentlich aus und dieser Ansatz ist ziemlich flexibel - Sie können ihn auf funky Weise animieren, Text hinzufügen usw.Layout:
Code:
Ergebnis (mit etwas Höhe hinzugefügt):
quelle
Die beste Lösung sollte sein
Keine Problemumgehung und funktioniert wie ein Zauber.
quelle
minHeight
, die größer als 0 ist (sagen wir 32dp vielleicht), vordefiniert. Durch Ändern dieser Eigenschaft erhalten Sie ein anderes Aussehen.