Как установить высоту Android progressbar?

мой activity_main.xml ниже, как вы видите, высота установлена 40 dip.

и в MyEclipse это выглядит следующим образом:

enter image description here

но когда я запускаю его на своем телефоне, он выглядит следующим образом:

enter image description here

Итак, мой вопрос в том, почему реальная высота progressbar не та, которую я установил? Как увеличить высоту progressbar?

7 ответов


С в этом уроке:

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

затем просто применить стиль к прогресс-баров или лучше, переопределите стиль по умолчанию в вашей теме, чтобы автоматически стилизовать все индикаторы выполнения вашего приложения.

разница, которую вы видите на скриншотах, заключается в том, что телефоны/эмуляторы используют версию Android difference (последняя тема из ICS (Holo), top-оригинальная тема).


Я думаю, самым простым решением будет:

mProgressBar.setScaleY(3f);

android: scaleY= " 8 " в вашем xml-файле


использовать

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


Как упоминалось в других ответах, похоже, вы устанавливаете стиль вашего индикатора выполнения для использования Holo.Свет:

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

Если это работает на вашем телефоне, его вероятно 3.0+ устройств. Однако ваш эмулятор выглядит так, как будто он использует индикатор выполнения "по умолчанию".

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

возможно, вы изменили стиль на индикатор выполнения "по умолчанию" между созданием снимков экрана? К сожалению, 2.устройства x не будут автоматически возвращаться к индикатору выполнения " по умолчанию если ваши проекты используют голограмму.Легкий прогресс-бар. Он просто разобьется.

Если вы действительно используете индикатор выполнения по умолчанию, то установка максимальной / минимальной высоты, как предложено, будет работать нормально. Однако, если вы используете голограмму.Светлый (или Холо) бар после этого устанавливая максимальную / минимальную высоту не будет работать. Вот пример вывода из установки max / min height на 25 и 100 dip:

макс / мин набор к погружению 25: 25 dip height progress bar

макс / мин набор до 100 погружений: 100 dip height progress bar

Вы можете увидеть что базовый drawable (progress_primary_holo_light.9.png) не масштабируется, как вы ожидали. Причина этого заключается в том, что граница 9-патча масштабирует только верхние и нижние несколько пикселей:

9-patch

горизонтальная область, граничащая с однопиксельной черной границей (зеленые стрелки), является частью, которая растягивается, когда Android необходимо изменить размер .ПНГ вертикально. Область между двумя красными стрелками не будет растягиваться вертикально.

лучшие решение исправить это-изменить 9patch .png, чтобы растянуть панель, а не" область холста", а затем создать пользовательский индикатор выполнения xml для использования этих 9patches. Аналогично описано здесь:https://stackoverflow.com/a/18832349

вот моя реализация только для недетерминированной голограммы.Легкий Прогрессбар. Вам нужно будет добавить свои собственные 9-патчи для indeterminant и Holo ProgressBars. В идеале я должен был полностью удален полотна. Вместо этого я оставил его, но установите растяжимую область "бар". https://github.com/tir38/ScalingHoloProgressBar


<ProgressBar  
android:minHeight="20dip" 
android:maxHeight="20dip"/>

значения->стили.в 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>

затем в строке прогресса добавьте:

style="@style/tallerBarStyle"