如何设置Android进度条高度?

时间:2012-11-22 09:55:55

标签: android progress-bar android-progressbar

我的activity_main.xml位于下方,正如您所见,高度设置为40度。     

在MyEclipse中,它看起来如下:

enter image description here

但是当我在手机上运行时,它看起来如下:

enter image description here

所以我的问题是为什么进度条的实际高度不是我设置的那个?如何增加进度条的高度?

11 个答案:

答案 0 :(得分:152)

我想最简单的解决方案是:

mProgressBar.setScaleY(3f);

答案 1 :(得分:41)

你的xml文件中的

android:scaleY =“8”

答案 2 :(得分:39)

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

然后只需将样式应用于进度条或更好,覆盖主题中的默认样式即可自动设置所有应用的进度条样式。

您在屏幕截图中看到的差异是因为手机/模拟器使用的是不同的Android版本(最新的是ICS(Holo)的主题,顶部是原始主题)。

答案 3 :(得分:14)

正如其他答案所述,您似乎正在设置进度条的样式以使用Holo.Light:

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

如果您的手机正在运行,则可能是3.0以上的设备。但是,您的模拟器看起来像使用“默认”进度条。

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

也许您在创建屏幕截图之间将样式更改为“默认”进度条?不幸的是,如果您的项目使用Holo.Light进度条,则2.x设备不会自动默认返回“默认”进度条。它会崩溃。

如果您确实使用默认进度条,则按建议设置最大/最小高度将正常工作。但是,如果您使用的是Holo.Light(或Holo)条,则设置最大/最小高度将不起作用。以下是设置最大/最小高度为25和100倾角的示例输出:

max / min设置为25 dip: 25 dip height progress bar

max / min设置为100 dip: 100 dip height progress bar

您可以看到基础drawable(progress_primary_holo_light.9.png)没有按照您的预期进行缩放。原因是9补丁边框仅缩放顶部和底部几个像素:

9-patch

单像素黑色边框(绿色箭头)边界的水平区域是Android需要垂直调整.png大小时拉伸的部分。两个红色箭头之间的区域不会垂直拉伸。

解决此问题的最佳解决方案是更改9patch .png以拉伸条而不是“画布区”,然后创建自定义进度条xml以使用这些9个补丁。类似地描述:https://stackoverflow.com/a/18832349

这是我对一个非不确定的Holo.Light ProgressBar的实现。您必须为不确定和Holo ProgressBars添加自己的9补丁。理想情况下,我应该完全删除画布区域。相反,我离开了它,但设置“bar”区域可伸缩。 https://github.com/tir38/ScalingHoloProgressBar

答案 4 :(得分:13)

使用此

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

答案 5 :(得分:10)

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

答案 6 :(得分:3)

values-&gt; 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"

答案 7 :(得分:1)

您可以使用材料组件库提供的 LinearProgressIndicator app:trackThickness 属性:

<com.google.android.material.progressindicator.LinearProgressIndicator
    android:indeterminate="true"
    app:trackThickness="xxdp"
    ../>

使用12dp

enter image description here

使用4dp

enter image description here

注意:它至少需要版本 1.3.0-alpha04

答案 8 :(得分:0)

这是我使用的进度条。

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

这是我的样式标签

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

答案 9 :(得分:0)

您可以将进度栏的样式设置为此:

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

答案 10 :(得分:0)

这里有很多反对的解决方案对我来说都不起作用,即使是公认的答案也是如此。我通过设置scaleY来解决它,但是如果您需要太多高度,则不是一个好的解决方案,因为可绘制对象是像素化的。

以编程方式:


progressBar.setScaleY(2f);

XML布局:


android:scaleY="2"