Par défaut, la barre de progression présente un certain remplissage au-dessus et au-dessous de la barre elle-même. Existe-t-il un moyen de supprimer ce rembourrage afin de n'avoir que la barre à la fin ?
Réponses
Trop de publicités?C'est ainsi que j'ai utilisé la réponse de Juozas :
hauteur de mon ProgressBar
est 4dp. J'ai donc créé un FrameLayout
avec une hauteur de 4dp et de mettre le layout_gravity
de ProgressBar
a center
. Ça marche comme sur des roulettes.
<FrameLayout
android:layout_width="match_parent"
android:layout_height="4dp">
<ProgressBar
style="?android:attr/progressBarStyleHorizontal"
android:layout_width="match_parent"
android:layout_height="4dp"
android:layout_gravity="center"
android:indeterminate="true" />
</FrameLayout>
Note : Quelle FrameLayout
fait est qu'il enlève tout ce qui est en excès, donc si vous faites face au problème où la ProgressBar
est encore mince, il suffit de définir le layout_height
de la ProgressBar
à un grand nombre comme 100dp
. Il couvrira entièrement le FrameLayout et ne montrera que 4dp
d'elle.
J'ai fini par utiliser une bibliothèque personnalisée pour résoudre ce problème. La plupart des autres solutions fonctionnent mais les résultats ne sont pas cohérents sur les différents appareils.
MaterialProgressBar
- Apparition cohérente sur Android 4.0+.
- Teinte correcte sur toutes les plateformes.
- Capable de supprimer le rembourrage intrinsèque du cadre ProgressBar.
- Possibilité de masquer la piste de la barre de progression horizontale du cadre.
- Utilisé pour remplacer le cadre ProgressBar.
A ajouter comme dépendance de gradle :
compile 'me.zhanghai.android.materialprogressbar:library:1.1.7'
Pour ajouter une barre de progression sans rembourrage intrinsèque à votre mise en page :
<me.zhanghai.android.materialprogressbar.MaterialProgressBar
android:layout_width="wrap_content"
android:layout_height="4dp"
android:indeterminate="true"
app:mpb_progressStyle="horizontal"
app:mpb_useIntrinsicPadding="false"
style="@style/Widget.MaterialProgressBar.ProgressBar.Horizontal" />
app:mpb_useIntrinsicPadding="false"
fait l'affaire. Pour plus de détails, voir le Page GitHub .
Si quelqu'un a encore besoin d'aide, il peut essayer ceci :
<androidx.core.widget.ContentLoadingProgressBar
android:id="@+id/progress"
android:layout_width="match_parent"
android:layout_height="wrap_content"
style="@style/Widget.AppCompat.ProgressBar.Horizontal"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="@+id/guideline"
android:indeterminate="true"
android:visibility="visible"
app:layout_constraintBottom_toTopOf="@+id/guideline" />
Ici, la barre de progression se trouve à l'intérieur du ConstraintLayout et le Contrainte de sommet à sommet et Contrainte de bas à haut doivent être appliqués au même élément (dans ce cas, il s'agit d'une ligne directrice).
*** LA SOLUTION COMPLÈTE.
<androidx.constraintlayout.widget.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="48dp">
<View
android:id="@+id/guideline"
android:layout_width="0dp"
android:layout_height="0dp"
android:orientation="vertical"
android:visibility="invisible"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" />
<ProgressBar
android:id="@+id/progress_bar"
style="?android:attr/progressBarStyleHorizontal"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:indeterminate="true"
app:layout_constraintBottom_toTopOf="@+id/guideline"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="@+id/guideline" />
</androidx.constraintlayout.widget.ConstraintLayout>
Pour supprimer le rembourrage vertial de ProgressBar
vous pouvez le faire en
- fixer la hauteur de
ProgressBar
- Utiliser scaleY="value" (value = height/4) (4 est la hauteur par défaut de la barre de progression)
L'exemple contient 1 wrap_content ProgressBar
, 1 8dp ProgressBar
, 1 100dp ProgressBar
<ProgressBar
style="?android:attr/progressBarStyleHorizontal"
...
android:layout_height="8dp"
android:scaleY="2" />
- Réponses précédentes
- Plus de réponses