我自定义了我的 SeekBar - 我使用自定义图像作为背景,使用自定义图像作为缩略图(How to create custom layout for seekbar in android? 和 How to customize the look of a SeekBar in Android?)。
我们的想法是制作一个看起来像这张图片中的 SeekBar:
当 progress
出现时,我希望拇指图像完全适合圆条。值设置为 0 或 100(满分 100)。
为了正确定位拇指(即不与条的两端重叠),我设置了 paddingLeft
& paddingRight
值正好是拇指宽度的一半 ( Android: Seekbar doesn't scroll all the way to end )。
.../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。我更改 paddingLeft
和 paddingRight
的技巧不是问题所在.
- 在 2.1 中,大拇指以横杆末端为中心,一半拇指放在横杆上,另一半拇指离开横杆。
- 在 2.2 中,拇指位于横杆内,没有任何重叠。因此,填充值影响结果的方式很奇怪。这就是我试图实现的目标,但是当使用自定义拇指时,这种效果不再以同样的方式起作用。
我想我需要制作一个自定义 java 类来处理此类事情。在这个问题 ( Possible to do rounded corners in custom Progressbar progressDrawable? ) 中,开发人员使用 ClipDrawable
为了制作一个正常的进度条。
为了正确定位我的拇指,我会使用什么类型的可绘制对象,以及如何使用?
最佳答案
seekbar.setThumbOffset(0);
在运行时。 不是来自 XML!
为我解决了问题。
关于android - SeekBar 自定义 - 如何正确定位自定义 "thumb"图像?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7735628/