Supprimer le rembourrage dans la barre de progression horizontale

Dans notre application, nous avons besoin d’une barre de progression indéterminée, comme ceci:

barre de progression comment cela devrait être

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:

barre de progression avec rembourrage

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:

entrez la description de l'image ici