android - SeekBar 自定义 - 如何正确定位自定义 "thumb"图像?

标签 android seekbar

我自定义了我的 SeekBar - 我使用自定义图像作为背景,使用自定义图像作为缩略图(How to create custom layout for seekbar in android?How to customize the look of a SeekBar in Android?)。

我们的想法是制作一个看起来像这张图片中的 SeekBar:

enter image description here

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 中这会产生不同的效果:

enter image description here


经过进一步调查(并使用完全默认的 SeekBar 进行尝试,我发现拇指图像的位置已从 2.1 更改为 2.2。我更改 paddingLeftpaddingRight 的技巧不是问题所在.

  • 在 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/

相关文章:

具有自定义 progressDrawable 的 Android 搜索栏

android - 在 android 主屏幕小部件中添加 Seekbar

Android,对话框中的SeekBar

android - Seekbar 背景图片不够大

android - 如何比较 2 个地点位置

android - 在 Android 上将绑定(bind)变量与 SQLite 结合使用

java - 将进度条放入recyclerview android

android - 如何在StartTrackingTouch the seekbar上隐藏软键盘

android - SSL pinning 的零星调用错误

java - Android 以像素为单位的定位可以工作,但不应该