将Android SeekBar更改为在主进度条上绘制次要进度条?

3
我希望改变Android SeekBar的行为,使辅助SeekBar实际上绘制在主SeekBar的顶部。从这里列出的ProgressBar文档中: http://developer.android.com/reference/android/widget/ProgressBar.html#attr_android:secondaryProgress

该进度条绘制在主进度条和背景之间。

当前辅助进度条的外观:

Default secondary progress bar

期望的次要进度条外观:

Desired secondary progress bar

Ideally,我希望在Android中覆盖ProgressBar.java中的一个方法,以改变绘制顺序,使得次要进度条在主要进度条之上绘制,但是我很难找到在源代码中覆盖的正确区域。有什么想法吗?
我已经成功地尝试使用相对布局绘制两个进度条,但是这种方法需要创建两个控件。
1个回答

9
这是一个晚回答,但我刚刚发现如何做到这一点。并不难 :)
首先看看Android项目中进度可绘制对象是如何定义的[在这里]。(https://github.com/android/platform_frameworks_base/blob/master/core/res/res/drawable/progress_horizontal_holo_dark.xml
你所要做的就是交换secondaryProgress和progress的顺序,这样progress就在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>


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接