更改Android SeekBar以在主要进度之上绘制次要进度?

时间:2013-12-16 19:02:36

标签: android seekbar

我想改变android搜索栏的行为,以便辅助android搜索栏实际上是在主要的搜索栏上绘制的。从此处列出的ProgressBar文档: http://developer.android.com/reference/android/widget/ProgressBar.html#attr_android:secondaryProgress

  

这一进展是在初步进展与实现进展之间取得的   背景

次要进度条的当前外观:

Default secondary progress bar

二级进度条的期望外观:

Desired secondary progress bar

理想情况下,我想覆盖Android中ProgressBar.java中的方法来更改绘图顺序,以便在主进度条的顶部绘制辅助进度条,但是我很难找到合适的区域在源代码中重写。任何想法在哪里看?

我成功尝试使用相对布局在另一个上面绘制两个进度条,但这种方法需要创建两个控件。

1 个答案:

答案 0 :(得分:7)

这是一个迟到的答案,但我发现了如何做到这一点。不那么困难:))

首先看一下如何在android项目[here]中定义进度drawable。(https://github.com/android/platform_frameworks_base/blob/master/core/res/res/drawable/progress_horizontal_holo_dark.xml

您所要做的就是切换secondaryProgress的顺序和进度,以便在此之前(如下所示)secondaryProgress进行如下操作:

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

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

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

现在可悲的是,这些资源并不公开。因此,您必须将progress_bg_holo_dark.9.pngprogress_primary_holo_dark.9.pngprogress_secondary_holo_dark.9.png复制到项目drawable-xhdpi文件夹中(也可能与其他dpi图像相同)。

然后调整xml文件,如下所示(只需删除“android:”):

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

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

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