My activity_main.xml
is below, as you see, the height is set 40 dip.
And in MyEclipse, it looks like below:
But when I run it on my phone, it looks like below:
So my question is why the real height of the progressbar is not the one I set? How to increase the height of the progressbar?
From this tutorial:
<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>
Then simply apply the style to your progress bars or better, override the default style in your theme to style all of your app's progress bars automatically.
The difference you are seeing in the screenshots is because the phones/emulators are using a difference Android version (latest is the theme from ICS (Holo), top is the original theme).
I guess the simplest solution would be:
mProgressBar.setScaleY(3f);
android:scaleY="8" in your xml file
Use this
style="@android:style/Widget.ProgressBar.Horizontal"
As mentioned in other answers, it looks like you are setting the style of your progress bar to use Holo.Light:
style="@android:style/Widget.Holo.Light.ProgressBar.Horizontal"
If this is running on your phone, its probably a 3.0+ device. However your emulator looks like its using a "default" progress bar.
style="@android:style/Widget.ProgressBar.Horizontal"
Perhaps you changed the style to the "default" progress bar in between creating the screen captures? Unfortunately 2.x devices won't automatically default back to the "default" progress bar if your projects uses a Holo.Light progress bar. It will just crash.
If you truly are using the default progress bar then setting the max/min height as suggested will work fine. However, if you are using the Holo.Light (or Holo) bar then setting the max/min height will not work. Here is a sample output from setting max/min height to 25 and 100 dip:
max/min set to 25 dip:
max/min set to 100 dip:
You can see that the underlying drawable (progress_primary_holo_light.9.png) isn't scaling as you'd expect. The reason for this is that the 9-patch border is only scaling the top and bottom few pixels:
The horizontal area bordered by the single-pixel, black border (green arrows) is the part that gets stretched when Android needs to resize the .png vertically. The area in between the two red arrows won't get stretched vertically.
The best solution to fix this is to change the 9patch .png's to stretch the bar and not the "canvas area" and then create a custom progress bar xml to use these 9patches. Similarly described here: https://stackoverflow.com/a/18832349
Here is my implementation for just a non-indeterminant Holo.Light ProgressBar. You'll have to add your own 9-patches for indeterminant and Holo ProgressBars. Ideally I should have removed the canvas area entirely. Instead I left it but set the "bar" area stretchable.
https://github.com/tir38/ScalingHoloProgressBar
<ProgressBar
android:minHeight="20dip"
android:maxHeight="20dip"/>
values->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>
Then in your ProgressBar add:
style="@style/tallerBarStyle"
This is the progress bar I have used.
<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" />
And this is my style tag
<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>