【问题标题】:How to make a custom SeekBar to show a color gradient in the bar?如何制作自定义 SeekBar 以在栏中显示颜色渐变?
【发布时间】:2026-02-06 17:10:01
【问题描述】:

出于学习目的,我想实现一个这样的 HSV 颜色选择器:

我知道我将使用SeekBars,但是如何在SeekBar 的栏中显示这些渐变。

  1. 如何在条形图中显示 7 个色谱,就像图像中显示的第一个?

  2. 如何显示从白色到特定颜色的线性渐变?以及如何显示从黑色到特定颜色的线性渐变?

我不是要代码,只是要大致的步骤大纲?

【问题讨论】:

  • 如果你不想要确切的代码,那么创建一个自定义的Drawable 类并通过SeekBar#setProgressDrawable 使用它
  • 试试这个,你可以在这里找到颜色选择器库,https://android-arsenal.com/tag/18
  • @Naz141 正如我所提到的,我这样做是为了学习。所以不要找图书馆。
  • @pskink 我想到了这一点,但问题是用户在第一个栏中选择的任何颜色,第二个和第三个栏将在一个极端的一侧具有该颜色。例如,在给定的图像中,用户在第一条中选择了橙色,因此第二条和第三条的右侧是橙色。所以它不像在 Photoshop 中创建图像并将其传递给 setProgressDrawable 那样简单。 =(
  • 我不是指任何 Photoshop 图片,我指的是自定义 Drawable class,一个扩展 Drawable 的类,类似于:*.com/a/30873744/2252830

标签: android seekbar color-picker android-seekbar android-graphics


【解决方案1】:

SeekBar 间接扩展了ProgressBar,它有一个名为setProgressDrawable(Drawable d) 的方法,将那个条形图绘制为Drawable,您将其作为参数传递给它。

您必须实现自己的自定义ShapeDrawable(可能是RectShape)才能提供所需的渐变。请参阅Android Graphics and Drawables guideShader 周围的课程,例如LinearGradient

【讨论】:

    最近更新 更多