Par défaut, ProgressBar a un certain remplissage au-dessus et en dessous de la barre elle-même. Existe-t-il un moyen de supprimer ce rembourrage pour n'avoir que la barre à la fin?
android
android-progressbar
Abergmeier
la source
la source
maxHeight
ne fonctionne pas.android:minHeight="4dp"
Réponses:
J'utilise ce qui suit comme solution de contournement pour ce problème.
la source
android:layout_marginTop="-6dp"
travaillé pour moi. Je me demande si cela dépend de l'appareil? Je n'ai testé que sur Xperia Z1Framelayout
(comme dans cette réponse est une meilleure solution et ne dépend pas de la taille / type / version du système d'Voici comment j'ai utilisé la réponse de Juozas:
ma hauteur
ProgressBar
est de 4dp. Donc , j'ai créé unFrameLayout
avec 4DP en hauteur et réglez lelayout_gravity
deProgressBar
àcenter
. Cela fonctionne comme un charme.la source
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.
Pour ajouter en tant que dépendance gradle:
Pour ajouter une ProgressBar sans remplissage intrinsèque à votre disposition:
app:mpb_useIntrinsicPadding="false"
fait l'affaire. Pour plus de détails, consultez la page GitHub .la source
Si quelqu'un a encore besoin d'aide, essayez ceci:
Ici, la barre de progression est à l'intérieur du ConstraintLayout , et les attributs constraintTop_toTopOf et constraintBottom_toTopOf doivent être appliqués au même élément (dans ce cas, il s'agit d'une ligne directrice).
*** SOLUTION COMPLÈTE: ***
la source
Il est possible de dessiner ProgressBar verticalement centré à l'intérieur d'un parent qui couperait le remplissage. Puisque ProgressBar ne peut pas se dessiner plus grand que le parent, nous devons créer un grand parent à placer dans une vue de détourage.
la source
Pour supprimer le remplissage vertical de
ProgressBar
, vous pouvez faire enProgressBar
L'exemple contient 1 wrap_content
ProgressBar
, 1 8dpProgressBar
, 1 100dpProgressBar
la source
Une solution complète à ce problème serait la suivante. Juste au cas où quelqu'un aurait besoin de fragments de code, c'est ce que j'ai fait.
Voici le progress_indeterminate_horizontal_holo.xml
Ressources de style copiées dans mon fichier de styles local.
Et enfin, définissez la hauteur minimale sur 4dp dans mon fichier de mise en page local.
la source
<your-sdk-folder>/platforms/android-17/data/res/drawable-hdpi/
J'ai rencontré le même problème en utilisant la barre de progression avec le style Horizontal.
La cause première est que le 9-patch par défaut pouvant être dessiné pour la barre de progression: (progress_bg_holo_dark.9.png) a des pixels transparents verticaux comme remplissage.
La solution finale qui a fonctionné pour moi: personnaliser le dessin de progression, mon exemple de code comme suit:
custom_horizontal_progressbar_drawable.xml
extrait de disposition:
la source
Une astuce consiste à ajouter des marges négatives à votre barre de progression.
Vous trouverez ci-dessous un exemple de code XML, en supposant qu'il se trouve en haut de votre écran:
la source
La réponse de Subin semble être la seule (actuellement) qui ne soit pas un piratage fragile sujet à la casse dans les futures versions de la ProgressBar Android.
Mais plutôt que de me donner la peine de décomposer les ressources, de les modifier et de les maintenir indéfiniment, j'ai choisi d'utiliser la bibliothèque MaterialProgressBar , qui le fait pour nous:
Dans build.gradle:
Ce projet a une belle démo qui montre les différences entre lui et la ProgressBar intégrée.
la source
si quelqu'un cherche toujours une solution - vérifiez ce commentaire
régler la hauteur minimale à 4 dp
-
la source
J'utilise minHeight et maxHeigh. Cela aide pour différentes versions d'API.
Il doit utiliser les deux. Api 23 fonctionne bien avec
Mais les versions inférieures d'API augmentent la hauteur de la barre de progression à maxHeight dans ce cas.
la source
Essayez ce qui suit:
... puis configurez la barre de progression en fonction de vos besoins, car elle affichera initialement une barre de taille moyenne avec une teinte de progression de couleur jaune avec une teinte de fond de progression grisâtre. Notez également qu'il n'y a pas de rembourrage vertical.
la source
Utilisez comme ça, dans Linearlayout
la source
l'ajout d'Android: progressDrawable à une liste de couches définie dans drawable a résolu le problème pour moi. Cela fonctionne en masquant la barre de progression dans un dessin personnalisé
exemple d'implémentation décrit sur https://stackoverflow.com/a/4454450/1145905
la source
J'utilise
style="@style/Widget.AppCompat.ProgressBar.Horizontal"
et il était assez facile de se débarrasser des marges. Ce style est:Je viens de remplacer la hauteur min / max:
la source
Pas nécessaire de télécharger un nouveau module ou même de mettre un FrameLayout autour de votre barre de progression. Ce ne sont que des hacks. Seulement 2 étapes:
Dans votre peu importe .xml
progress_horizontal.xml, modifiez les valeurs à votre guise.
Vous n'aimez pas les coins arrondis?
Supprimer le rayon d'angle
Vous n'aimez pas les couleurs? Changez les couleurs, etc. C'est fait!
En général, ce sont les étapes pour changer le code de tout ce que vous n'aimez pas. Trouvez simplement le code source et déterminez ce qu'il faut changer. Si vous suivez le code source ProgressBar, vous trouverez un fichier appelé progress_horizontal.xml auquel il fait référence. En gros, comment je résous tous mes problèmes XML.
la source
la source
la source
Utilisez simplement Material ProgressIndicator qui n'a pas de marge cachée.
la source
Une solution simple sans astuces, compatible avec n'importe quelle version d'Android et qui n'a pas besoin de bibliothèques externes, simule
ProgressBar
avec deux à l'Views
intérieurLinearLayout
. C'est ce avec quoi j'ai fini. Cela a l'air assez soigné et cette approche est assez flexible - vous pouvez l'animer de manière funky, ajouter du texte, etc.Disposition:
Code:
Résultat (avec une certaine élévation ajoutée):
la source
La meilleure solution devrait être
Aucune solution de contournement et fonctionne comme un charme.
la source
minHeight
qui est plus grand que 0 (disons 32dp peut-être) prédéfini. En modifiant cette propriété, vous obtenez un look différent.