将刻度线对齐到Android SeekBar

时间:2015-05-26 15:19:16

标签: android seekbar

SeekBar

我试图在Android上的SeekBar上添加一些刻度标记。我能够生成带刻度标记的背景,但是我无法找到一种方法来将刻度线与实际的SeekBar线对齐。从截图中可以看出,刻度线实际上是在SeekBar线之前开始的。

我可以通过反复试验找到距离,但我怀疑它会在每台设备上保持不变。我还注意到线条和背景边缘之间的空间与拇指滑块的半径相同。但我无法找到确定半径的方法,而且我不确定它是否会在每台设备上运行。

我知道有自定义搜索栏可用,但我试图避免添加第三方依赖。

1 个答案:

答案 0 :(得分:3)

enter image description here

这使用getThumb()。getMinimumWidth()来估计SeekBar行开头的偏移量。它似乎有效,但不确定它会在每台设备上运行。

更新:此代码适用于默认情况,但如果更改填充则会中断。最好使用getPaddingLeft()和getPaddingRight()来确定滑块的长度和位置。这些函数通常会返回getThumb()。getMinimumWidth()/ 2,除非更改了填充或缩略图。 getPaddlingLeft()和getPaddingRight()将始终有效。

        Bitmap b= Bitmap.createBitmap(w, h, Bitmap.Config.RGB_565);

        Canvas c=new Canvas(b);
        Paint p=new Paint();
        p.setColor(Color.WHITE);

        int offset=this.getThumb().getMinimumWidth();
        float interval=(float)((width-offset*1.0)/24);
        for(int i=0;i<25;i++){
            float x=i*interval+offset/2;
            c.drawLine(x,0,x,height,p);
            c.drawText(Integer.toString(i),x,height,p);

        }