繁体   English   中英

SeekBar自定义 - 如何正确定位自定义“拇指”图像?

[英]SeekBar customization - how to properly position custom “thumb” image?

我已经定制了我的SeekBar - 我使用自定义图像作为背景,并使用自定义图像作为拇指( 如何在Android中为搜索栏创建自定义布局?以及如何自定义Android中SeekBar的外观? )。

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

在此输入图像描述

progress值设置为0或100(满分100)时,我希望拇指图像完美地适合圆角条。

为了正确定位拇指(即不与条的两端重叠),我将paddingLeftpaddingRight值设置为拇指宽度的一半( 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。我改变paddingLeftpaddingRight方法不是问题。

  • 在2.1中,拇指以杆的一端为中心,拇指的一半位于杆上,一半拇指位于杆上。
  • 在2.2中,拇指位于条内,没有任何重叠。 因此填充值影响结果的奇怪方式。 这是我试图实现的,但是当使用自定义拇指时,此效果不再以相同的方式工作。

我想我需要创建一个自定义的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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM