84

activity_main.xml在下面,如您所见,高度设置为 40 倾角。

在 MyEclipse 中,它如下所示:

在此处输入图像描述

但是当我在手机上运行它时,它如下所示:

在此处输入图像描述

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

4

11 回答 11

215

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

mProgressBar.setScaleY(3f);
于 2014-12-04T18:14:08.547 回答
81

android:scaleY="8" 在你的 xml 文件中

于 2017-06-22T13:52:54.123 回答
47

本教程

<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) 的主题,顶部是原始主题)。

于 2012-11-22T10:02:08.160 回答
20

用这个

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

于 2013-07-23T08:03:39.520 回答
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 倾角的示例输出:

最大/最小设置为 25 倾角: 25 倾角高度进度条

最大/最小设置为 100 倾角: 100 倾角高度进度条

您可以看到底层可绘制对象 (progress_primary_holo_light.9.png) 没有像您预期的那样缩放。原因是 9-patch 边框仅缩放顶部和底部的几个像素:

9补丁

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

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

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

于 2013-12-03T19:41:00.553 回答
13

您可以使用LinearProgressIndicatorMaterial Components Library 提供的属性和app:trackThickness属性:

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

12dp

在此处输入图像描述

4dp

在此处输入图像描述

注意:它至少需要 version 1.3.0-alpha04

于 2020-08-18T07:42:12.417 回答
13

这里有很多赞成票的解决方案对我不起作用,即使是接受的答案。我通过设置 scaleY 解决了这个问题,但如果您需要太多高度,这不是一个好的解决方案,因为可绘制对象是像素化的。

以编程方式:


progressBar.setScaleY(2f);

XML 布局:


android:scaleY="2"
于 2019-11-18T16:33:53.367 回答
9
<ProgressBar  
android:minHeight="20dip" 
android:maxHeight="20dip"/>
于 2012-11-22T09:57:02.303 回答
6

这是我用过的进度条。

<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>
于 2018-12-26T06:24:34.863 回答
4

值->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"
于 2012-11-22T10:08:57.727 回答
0

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

style="@android:style/Widget.ProgressBar.Horizontal"    
于 2019-06-25T10:12:50.647 回答