[英]SeekBar customization - how to properly position custom “thumb” image?
我已经定制了我的SeekBar - 我使用自定义图像作为背景,并使用自定义图像作为拇指( 如何在Android中为搜索栏创建自定义布局?以及如何自定义Android中SeekBar的外观? )。
我们的想法是制作一个看起来像这个图像中的SeekBar:
当progress
值设置为0或100(满分100)时,我希望拇指图像完美地适合圆角条。
为了正确定位拇指(即不与条的两端重叠),我将paddingLeft
和paddingRight
值设置为拇指宽度的一半( Android:Seekbar不会一直滚动到结束 )。
... / RES /布局/ 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
方法不是问题。
我想我需要创建一个自定义的java类来处理这类事情。 在这个问题中( 可以在自定义Progressbar progressDrawable中执行圆角? ),开发人员使用ClipDrawable
来生成正常的进度条。
我会使用什么类型的可绘制对象,以及如何正确定位我的拇指?
seekbar.setThumbOffset(0);
在运行时。 不是来自XML!
解决了我的问题。
thumbOffset参数的行为在这两个版本之间发生了变化。 与提供的位置参数相比,ThumbOffset确定拇指图像的实际偏移量。
终于找到了答案,这里的情况是你必须使用android:thumbOffset
,但是android:thumbOffset
不是拇指放置器和进度条的设置器,但是,它是从它的开始到它的中心点的拇指长度,所以搜索seekbar
可以在其开始点调整拇指的中心点。 因此,如果我们有一个宽度为50的拇指图像,则thumbOffset必须为25 (50/2),这样搜索seekbar
将调整拇指像素25处的零值 ,这将使拇指看起来像是正好在中间。
试试这个:
<SeekBar android:id="@+id/seek"
android:layout_width="fill_parent"
android:layout_height="73dip"
android:max="80"
android:progress="12"
android:maxWidth="273dip"
android:maxHeight="73dip"
android:secondaryProgress="255"
android:background="@drawable/image2" <!-- this is an image -->
android:progressDrawable="@drawable/image1" <!-- this is an image -->
android:thumb="@drawable/lock_thumb"
/>
我试过这个,它与2.1和2.2完美配合。
在你的情况下,尝试像我一样调整maxWidth,max和progress,并尝试删除填充。 它可以帮助您解决问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.