如何设置Android进度条的高度?

Tom*_*Xue 65 android android-progressbar progress-bar

activity_main.xml正如你所见,我在下方,高度设定为40度.

在MyEclipse中,它看起来如下:

在此输入图像描述

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

在此输入图像描述

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

Mar*_*fer 169

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

mProgressBar.setScaleY(3f);
Run Code Online (Sandbox Code Playgroud)

  • 这个答案,只有 4f,让我的酒吧难以忍受模糊,几乎就像它上面有发光的风格。 (3认同)
  • 实际上,这是唯一的解决方案。感谢分享 (2认同)
  • 请注意,如果你要在它上面画一些东西(例如圆圈),你会得到它的缩放版本(即椭圆) (2认同)

Mak*_*zev 55

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


Vin*_*rat 38

本教程:

<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>
Run Code Online (Sandbox Code Playgroud)

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

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


Pir*_*aba 16

用这个

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

  • 您在ProgressBar上设置自定义高度的答案是什么? (11认同)
  • 这解决方案有效!! 以前我使用`?android:attr/progressBarStyleHorizo​​ntal`,这不起作用 (2认同)

tir*_*r38 14

正如其他答案中所提到的,看起来您正在设置进度条的样式以使用Holo.Light:

style="@android:style/Widget.Holo.Light.ProgressBar.Horizontal"
Run Code Online (Sandbox Code Playgroud)

如果这是在您的手机上运行,​​它可能是3.0+设备.但是,您的模拟器看起来像使用"默认"进度条.

style="@android:style/Widget.ProgressBar.Horizontal"
Run Code Online (Sandbox Code Playgroud)

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

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

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

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

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

9补丁

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

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

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


Ign*_*ers 12

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

以编程方式:


progressBar.setScaleY(2f);
Run Code Online (Sandbox Code Playgroud)

XML 布局:


android:scaleY="2"
Run Code Online (Sandbox Code Playgroud)


And*_*per 10

<ProgressBar  
android:minHeight="20dip" 
android:maxHeight="20dip"/>
Run Code Online (Sandbox Code Playgroud)

  • 这不行!Piraba的回答很容易实现,就像魅力一样. (2认同)

Sye*_*eda 7

这是我用过的进度条。

<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" />
Run Code Online (Sandbox Code Playgroud)

这是我的风格标签

 <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>
Run Code Online (Sandbox Code Playgroud)


Gab*_*tti 7

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

<com.google.android.material.progressindicator.LinearProgressIndicator
    android:indeterminate="true"
    app:trackThickness="xxdp"
    ../>
Run Code Online (Sandbox Code Playgroud)

12dp

在此处输入图片说明

4dp

在此处输入图片说明

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