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:
Mais quand je le lance sur mon téléphone, il ressemble à ceci:
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?
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).
Je suppose que la solution la plus simple serait:
mProgressBar.setScaleY(3f);
Android: scaleY = "8" dans votre fichier XML
Utilisez ceci
style="@Android:style/Widget.ProgressBar.Horizontal"
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:
max/min réglé sur 100 dip:
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:
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
<ProgressBar
Android:minHeight="20dip"
Android:maxHeight="20dip"/>
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"
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>
Vous pouvez définir le style de la barre de progression sur ceci:
style="@Android:style/Widget.ProgressBar.Horizontal"