我已经自定义了SeekBar - 我使用自定义图像作为背景,并使用自定义图像作为滑块(如如何在Android中创建自定义SeekBar?和如何自定义SeekBar的外观?)。
我的想法是创建一个SeekBar,其外观类似于此图像:
当设置
为了正确定位滑块(即不重叠于条的两端),我已将
.../res/layout/main.xml:
我的想法是创建一个SeekBar,其外观类似于此图像:
![enter image description here](https://istack.dev59.com/HWAPW.webp)
progress
值为0或100(百分比)时,我希望滑块图像完美地适应圆形条中。为了正确定位滑块(即不重叠于条的两端),我已将
paddingLeft
和paddingRight
的值设置为滑块宽度的一半(参见Android:SeekBar无法滚动到最后)。.../res/layout/main.xml:
<SeekBar android:id="@+id/frequency_slider"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:max="100" android:progress="0"
android:progressDrawable="@drawable/seekbar_no_visible_progress"
android:thumb="@drawable/seekbar_thumb" <!-- this is an image -->
android:background="@drawable/hos_bar" <!-- this is an image -->
android:paddingLeft="24dp"
android:paddingRight="24dp">
</SeekBar>
这个在Android 2.1版本中可以使用。
在Android 2.2版本中会产生不同的效果:
经过进一步调查(并尝试使用完全默认的SeekBar
),我发现拇指图像的位置从2.1改变到了2.2。我的hack改变paddingLeft
和paddingRight
不是问题所在。
- 在2.1中,拇指围绕条形末端居中,拇指的一半在条上,一半在条外。
- 在2.2中,拇指位于条内,没有重叠。因此,填充值产生的奇怪效果就出现了。这正是我想要的效果,但是当使用自定义拇指时,这种效果不再起作用。
我认为我需要创建一个自定义的Java类来处理这种类型的问题。在这个问题中(Possible to do rounded corners in custom Progressbar progressDrawable?),开发者使用了一个ClipDrawable
来制作一个标准的进度条。
我应该使用什么类型的Drawable对象,以及如何才能正确地定位我的拇指?