web-dev-qa-db-fra.com

Comment définir la hauteur de la barre de progression Android?

Mon activity_main.xml est en dessous, comme vous le voyez, la hauteur est réglée à 40 dip . 

Et dans MyEclipse, cela ressemble à ceci:

enter image description here

Mais quand je le lance sur mon téléphone, il ressemble à ceci:

enter image description here

Ma question est donc la suivante: pourquoi la hauteur réelle de la barre de progression n’est-elle pas celle que j’ai définie? Comment augmenter la hauteur de la barre de progression?

55
Tom Xue

De ce tutoriel :

<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>

Ensuite, appliquez simplement le style à vos barres de progression ou mieux, remplacez le style par défaut de votre thème pour styler automatiquement toutes les barres de progression de votre application.

La différence que vous voyez dans les captures d'écran tient au fait que les téléphones/émulateurs utilisent une version différente d'Android (le dernier est le thème de ICS (Holo), en haut, le thème d'origine).

37

Je suppose que la solution la plus simple serait:

mProgressBar.setScaleY(3f);
147
Martin Pfeffer

Android: scaleY = "8" dans votre fichier XML 

37
Maksim Kniazev

Utilisez ceci

style="@Android:style/Widget.ProgressBar.Horizontal"

15
Piraba

Comme mentionné dans d'autres réponses, il semble que vous définissiez le style de votre barre de progression pour utiliser Holo.Light:

style="@Android:style/Widget.Holo.Light.ProgressBar.Horizontal"

Si cela fonctionne sur votre téléphone, il s'agit probablement d'un appareil 3.0+. Cependant, votre émulateur semble utiliser une barre de progression "par défaut". 

style="@Android:style/Widget.ProgressBar.Horizontal"

Peut-être avez-vous changé le style de la barre de progression "par défaut" entre la création des captures d'écran? Malheureusement, les périphériques 2.x ne reviendront pas automatiquement à la barre de progression "par défaut" si vos projets utilisent une barre de progression Holo.Light. Il va juste tomber en panne.

Si vous utilisez réellement la barre de progression par défaut, le réglage de la hauteur max/min comme suggéré fonctionnera sans problème. Cependant, si vous utilisez la barre Holo.Light (ou Holo), le réglage de la hauteur max/min ne fonctionnera pas. Voici un exemple de sortie du réglage hauteur max/min entre 25 et 100 dip:

max/min réglé sur 25 dip: 25 dip height progress bar

max/min réglé sur 100 dip: 100 dip height progress bar

Vous pouvez constater que le dessin sous-jacent (progress_primary_holo_light.9.png) n’est pas redimensionné comme vous le souhaiteriez. La raison en est que la bordure de 9 patchs ne fait que redimensionner les quelques pixels du haut et du bas:

9-patch

La zone horizontale bordée par la bordure noire à un pixel (flèches vertes) est la partie qui s’étire lorsque Android doit redimensionner le fichier .png verticalement. La zone située entre les deux flèches rouges ne sera pas étirée verticalement.

La meilleure solution pour résoudre ce problème consiste à modifier les fichiers .png de 9patch pour étirer la barre et non la "zone de travail", puis à créer une barre de progression xml personnalisée pour utiliser ces 9 patches. De même décrit ici: https://stackoverflow.com/a/18832349

Voici mon implémentation pour un Holo.Light ProgressBar non indéterminé. Vous devrez ajouter vos 9 correctifs pour les barres d'indétermination et Holo ProgressBars. Idéalement, j'aurais dû supprimer entièrement la zone de toile. Au lieu de cela, je l’ai laissé mais j’ai défini la zone «barre» extensible . https://github.com/tir38/ScalingHoloProgressBar

14
tir38
<ProgressBar  
Android:minHeight="20dip" 
Android:maxHeight="20dip"/>
10
Android Developer

valeurs-> 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>

Ensuite, dans votre barre de progression, ajoutez:

style="@style/tallerBarStyle"
3
Talha

C'est la barre de progression que j'ai utilisée. 

<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" />

Et c'est ma balise de style

 <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>
0
Sundus Bokhari

Vous pouvez définir le style de la barre de progression sur ceci:

style="@Android:style/Widget.ProgressBar.Horizontal"    
0
Rania