我试图在安卓系统的seekbar上放置一些勾号指示器。我可以很好地生成一个带有刻度线的背景,但是我不知道如何将刻度线与实际的seekbar线对齐。从截图中可以看到,勾号实际上是在seekbar行之前开始的。
我可以通过反复试验找到距离,但我怀疑每台设备上的距离都会保持不变。我还注意到线条和背景边缘之间的空间与拇指滑块的半径相同。但我找不到确定半径的方法,而且我也不确定它是否适用于所有设备。
我知道有定制seekbar可用,但我试图避免添加第三方依赖项。

最佳答案

这将使用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);

        }

09-10 06:55
查看更多