在没有背景的情况下在Android中创建ProgressBar

时间:2014-03-02 23:02:48

标签: android progress-bar android-progressbar

我想创建一个没有背景的ProgressBar。我已经能够将背景变为透明,但在背景通常显示的空间中仍然存在填充。将填充设置为0不会更改此设置。是否有可能在不创建自定义绘图的情况下实现我想要的目标?

1 个答案:

答案 0 :(得分:0)

问题是用于ProgressBar的默认9Patch图像周围有空格。例如,下面是用于主要进度,次要进度和背景的标准holo_dark图像。如您所见,它们的图像中都有透明空间区域。

enter image description here progress_primary_holo_dark.9.png
enter image description here progress_secondary_holo_dark.9.png
enter image description here progress_bg_holo_dark.9.png

为了实现您的目标,您需要提供自己的9Patch图像,这些图像没有这些额外的空间。在代码中使用setProgressDrawable()或在xml中使用android:progressDrawable,为ProgressBar设置Drawable。

您可以将所有必要的图像组合在单个LayerList Drawable中,就像Android操作系统一样。例如:

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">

    <item android:id="@android:id/background"
          android:drawable="@drawable/my_progress_bg" />

    <item android:id="@android:id/secondaryProgress">
        <scale android:scaleWidth="100%"
               android:drawable="@drawable/my_progress_secondary" />
    </item>

    <item android:id="@android:id/progress">
        <scale android:scaleWidth="100%"
               android:drawable="@drawable/my_progress_primary" />
    </item>

</layer-list>

您可以在正在开发的计算机上的sdk / platforms / android-xx / data / res /文件夹中找到Android使用的所有默认图形资源。