Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/183.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android SeekBar定制-如何正确定位定制“;拇指;形象?_Android_Seekbar - Fatal编程技术网

Android SeekBar定制-如何正确定位定制“;拇指;形象?

Android SeekBar定制-如何正确定位定制“;拇指;形象?,android,seekbar,Android,Seekbar,我已经定制了我的SeekBar-我使用自定义图像作为背景,自定义图像作为拇指(&) 我们的想法是制作一个SeekBar,看起来像下图中的: 我希望当进度值设置为0或100(满分100)时,拇指图像能够完美地融入圆形条中 为了正确定位拇指(即不与杆端重叠),我已将paddingLeft和paddingRight值设置为拇指宽度的一半() …/res/layout/main.xml: <SeekBar android:id="@+id/frequency_slider" androi

我已经定制了我的SeekBar-我使用自定义图像作为背景,自定义图像作为拇指(&)

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

我希望当
进度
值设置为0或100(满分100)时,拇指图像能够完美地融入圆形条中

为了正确定位拇指(即不与杆端重叠),我已将
paddingLeft
paddingRight
值设置为拇指宽度的一半()

…/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:paddingLeft=“24dp”
android:paddingRight=“24dp”>
这在Android2.1中起作用


在Android 2.2中,这会产生不同的效果:


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

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

我想我需要创建一个自定义java类来处理这类事情。在这个问题()中,开发人员使用
ClipDrawable
来创建一个正常的进度条

为了正确定位拇指,我将使用哪种类型的可绘制对象,以及如何使用?

尝试使用以下方法:

<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"                             
        />

android:thumb=“@drawable/lock_thumb”
/>
我已经试过了,它在2.1和2.2上运行得非常好

在你的情况下,试着像我一样调整maxWidth、max和progress,并尝试移除填充物。这可能会帮助你解决问题


这两个版本之间,thumbOffset参数的行为发生了变化。thumbOffset确定了拇指图像的实际偏移量,与提供的位置参数相比

seekbar.setThumbOffset(0);
在运行时。 不是来自XML


为我解决了这个问题。

终于找到了答案,这里的情况是你必须使用
android:thumbOffset
,但是
android:thumbOffset
不是进度条中拇指位置的设定器,而是拇指长度开始它的中心点o使
seekbar
可以在拇指的起点调整拇指的中心点。因此,如果拇指图像的宽度为50,则拇指偏移量必须为25(50/2),这样
seekbar
将调整拇指像素25处的零值,使拇指正好位于中间。

谢谢。我已更新了我的问题。我不想要的效果仍然存在(同样在标准seekbar上)。当进度值设置为0或最大值时,我希望拇指图像能够很好地适应条的每个圆角端。