Dans notre application, nous avons besoin d’une barre de progression indéterminée, comme ceci:
Nous pouvons y parvenir en définissant une marge négative sur la barre de progression, comme ceci:
MAIS parce que ConstraintLayout ne prend pas en charge les marges négatives, cela ressemblera à ceci:
OK, la marge négative était un hack. Remplaçons-le par un hack différent, allons-nous? Introduisons notre vue personnalisée CustomProgressBar
, qui étend ProgressBar
et remplace sa méthode onDraw
, comme onDraw
:
@Override protected void onDraw(Canvas canvas) { int marginTop = dpToPx(7); canvas.translate(0, -marginTop); super.onDraw(canvas); }
Mais tout cela sent le mauvais code. Il doit y avoir une meilleure solution! Que recommanderais-tu?
Une autre façon de faire consiste à utiliser une barre de progression et une barre de progression centrales entre le sumt parent et la ligne direcsortingce.
Solution qui ressemble moins à un hack: Enveloppez un énorme ProgressBar
dans un FrameLayout
plus FrameLayout
. De cette façon, FrameLayout
limite sa hauteur, mais la FrameLayout
ProgressBar
s’affiche toujours dans son intégralité.
J’ai rencontré le même problème aussi. Et comme vous l’avez dit, je rencontre de nombreuses solutions qui ressemblent toutes à un piratage qui pourrait casser autre chose. Cela dit, je suis tombé sur une solution qui consiste à utiliser cette bibliothèque à la place pour la barre de progression.
Une chose à noter est, il vous dit de l’intégrer en ajoutant:
comstack 'me.zhanghai.android.materialprogressbar:library:1.3.0'
Cependant, lorsque j’ai utilisé cela, une erreur s’est produite dans une bibliothèque de support Android pour Floating Action Bar. Donc, je vous recommande d’utiliser ceci à la place:
comstack 'me.zhanghai.android.materialprogressbar:library:1.1.7'
Un extrait de code sur la façon dont je l’ai utilisé:
J’espère que cela t’aides!
Une solution de contournement que j’ai faite est de régler la hauteur de la barre de progression de façon très proche de la largeur du trait, comme ceci:
Barre de progression:
Progress drawable:
-
-
Qui ressemblait à ceci: