Mein activity_main.xml
ist unten, wie Sie sehen, ist die Höhe 40 Dip eingestellt.
Und in MyEclipse sieht es wie folgt aus:
Aber wenn ich es auf meinem Telefon starte, sieht es wie folgt aus:
Meine Frage ist also, warum die tatsächliche Höhe des Fortschrittsbalkens nicht die von mir festgelegte ist. Wie kann man die Höhe des Fortschrittsbalkens erhöhen?
android
progress-bar
android-progressbar
Tom Xue
quelle
quelle
Antworten:
Aus diesem 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 überschreiben Sie den Standardstil in Ihrem Design, um alle Fortschrittsbalken Ihrer App automatisch zu formatieren.
Der Unterschied, den Sie in den Screenshots sehen, besteht darin, dass die Telefone / Emulatoren eine andere Android-Version verwenden (das neueste ist das Thema von ICS (Holo), oben das ursprüngliche Thema).
quelle
Ich denke, die einfachste Lösung wäre:
mProgressBar.setScaleY(3f);
quelle
android: scaleY = "8" in deiner XML-Datei
quelle
Benutze das
style="@android:style/Widget.ProgressBar.Horizontal"
quelle
?android:attr/progressBarStyleHorizontal
, das funktioniert nichtWie in anderen Antworten erwähnt, scheinen Sie den Stil Ihres Fortschrittsbalkens für die Verwendung von Holo.Light festzulegen:
style="@android:style/Widget.Holo.Light.ProgressBar.Horizontal"
Wenn dies auf Ihrem Telefon ausgeführt wird, handelt es sich wahrscheinlich um ein Gerät ab 3.0. Ihr Emulator sieht jedoch so aus, als würde er einen "Standard" -Verfahrensbalken verwenden.
style="@android:style/Widget.ProgressBar.Horizontal"
Vielleicht haben Sie den Stil zwischen dem Erstellen der Screenshots in den Fortschrittsbalken "Standard" geändert? Leider kehren 2.x-Geräte nicht automatisch zum Standard-Fortschrittsbalken zurück, wenn Ihre Projekte einen Holo.Light-Fortschrittsbalken verwenden. Es wird einfach abstürzen.
Wenn Sie wirklich den Standard-Fortschrittsbalken verwenden, funktioniert das Einstellen der maximalen / minimalen Höhe wie vorgeschlagen einwandfrei. Wenn Sie jedoch die Holo.Light- (oder Holo) Leiste verwenden, funktioniert das Einstellen der maximalen / minimalen Höhe nicht. Hier ist eine Beispielausgabe aus der Einstellung der maximalen / minimalen Höhe auf 25 und 100 Dip:
max / min auf 25 dip eingestellt:
max / min auf 100 dip eingestellt:
Sie können sehen, dass das zugrunde liegende Drawable (progress_primary_holo_light.9.png) nicht wie erwartet skaliert. Der Grund dafür ist, dass der 9-Patch-Rand nur die oberen und unteren Pixel skaliert:
Der horizontale Bereich, der vom schwarzen Rand mit einem Pixel (grüne Pfeile) begrenzt wird, ist der Teil, der gedehnt wird, wenn Android die Größe des PNG 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 "Canvas-Bereich" zu dehnen, 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 eine nicht unbestimmte Holo.Light ProgressBar. Sie müssen Ihre eigenen 9-Patches für unbestimmte und Holo ProgressBars hinzufügen. Idealerweise hätte ich den Leinwandbereich komplett entfernen sollen. Stattdessen habe ich es verlassen, aber den "Balken" -Bereich dehnbar gemacht. https://github.com/tir38/ScalingHoloProgressBar
quelle
<ProgressBar android:minHeight="20dip" android:maxHeight="20dip"/>
quelle
Viele Lösungen hier mit vielen positiven Stimmen haben bei mir nicht funktioniert, selbst die akzeptierte Antwort. Ich habe es durch Einstellen der SkalaY gelöst, aber es ist keine gute Lösung, wenn Sie zu viel Höhe benötigen, da das Zeichenelement pixelig ist.
Programmatisch:
progressBar.setScaleY(2f);
XML-Layout:
android:scaleY="2"
quelle
values-> styles.xml
<style name="tallerBarStyle" parent="@android:style/Widget.SeekBar"> <item name="android:indeterminateOnly">false</item> <item name="android:progressDrawable">@android:drawable/progress_horizontal</item> <item name="android:indeterminateDrawable">@android:drawable/progress_horizontal</item> <item name="android:minHeight">8dip</item> <item name="android:maxHeight">20dip</item> </style>
Fügen Sie dann in Ihrer ProgressBar Folgendes hinzu:
style="@style/tallerBarStyle"
quelle
Dies ist der Fortschrittsbalken, den ich verwendet habe.
<ProgressBar android:padding="@dimen/dimen_5" android:layout_below="@+id/txt_chklist_progress" android:id="@+id/pb_media_progress" style="@style/MyProgressBar" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_gravity="center" android:progress="70" android:scaleY="5" android:max="100" android:progressBackgroundTint="@color/white" android:progressTint="@color/green_above_avg" />
Und das ist mein Style-Tag
<style name="MyProgressBar" parent="@style/Widget.AppCompat.ProgressBar.Horizontal"> <item name="android:progressBackgroundTint">@color/white</item> <item name="android:progressTint">@color/green_above_avg</item> </style>
quelle
Sie können das
ProgressIndicator
von der Material Components Library bereitgestellte und dasapp:indicatorSize
Attribut verwenden:<com.google.android.material.progressindicator.ProgressIndicator style="@style/Widget.MaterialComponents.ProgressIndicator.Linear.Indeterminate" app:indicatorSize="xxdp" ../>
Mit
12dp
:Mit
4dp
:Hinweis: Es ist mindestens die Version erforderlich
1.3.0-alpha03
.quelle
Sie können den Stil des Fortschrittsbalkens wie folgt festlegen:
style="@android:style/Widget.ProgressBar.Horizontal"
quelle