Как установить высоту панели прогресса Android?

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

И в MyEclipse это выглядит так:

Введите описание изображения здесь

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

Введите описание изображения здесь

Поэтому мой вопрос: почему реальная высота панели прогресса не та, которую я установил? Как увеличить высоту панели прогресса?

Solutions Collecting From Web of "Как установить высоту панели прогресса Android?"

Из этого урока :

 <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 (последняя тема – от ICS (Holo), сверху – оригинальная тема).

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

 mProgressBar.setScaleY(3f); 

Использовать это

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

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

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

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

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

Возможно, вы изменили стиль на «индикатор хода» по умолчанию между созданием снимков экрана? К сожалению, устройства 2.x автоматически не будут возвращаться на стандартный индикатор выполнения, если в ваших проектах используется индикатор прогресса Holo.Light. Он просто потерпит крах.

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

Max / min, установленное на 25 dip: 25 индикатор хода высоты хода

Max / min, установленное на 100 dip: 100 индикатор хода

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

9-патч

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

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

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

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

с ценностно> 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> 

Затем в вашем ProgressBar добавьте:

 style="@style/tallerBarStyle" 

Android: scaleY = "8" в вашем XML-файле