Как установить высоту Android progressbar?
мой activity_main.xml
ниже, как вы видите, высота установлена 40 dip.
и в MyEclipse это выглядит следующим образом:
но когда я запускаю его на своем телефоне, он выглядит следующим образом:
Итак, мой вопрос в том, почему реальная высота 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-оригинальная тема).
Как упоминалось в других ответах, похоже, вы устанавливаете стиль вашего индикатора выполнения для использования 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:
макс / мин набор до 100 погружений:
Вы можете увидеть что базовый drawable (progress_primary_holo_light.9.png) не масштабируется, как вы ожидали. Причина этого заключается в том, что граница 9-патча масштабирует только верхние и нижние несколько пикселей:
горизонтальная область, граничащая с однопиксельной черной границей (зеленые стрелки), является частью, которая растягивается, когда Android необходимо изменить размер .ПНГ вертикально. Область между двумя красными стрелками не будет растягиваться вертикально.
лучшие решение исправить это-изменить 9patch .png, чтобы растянуть панель, а не" область холста", а затем создать пользовательский индикатор выполнения xml для использования этих 9patches. Аналогично описано здесь:https://stackoverflow.com/a/18832349
вот моя реализация только для недетерминированной голограммы.Легкий Прогрессбар. Вам нужно будет добавить свои собственные 9-патчи для indeterminant и Holo ProgressBars. В идеале я должен был полностью удален полотна. Вместо этого я оставил его, но установите растяжимую область "бар". https://github.com/tir38/ScalingHoloProgressBar
значения->стили.в 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"