其他分享
首页 > 其他分享> > 将刻度线对准Android SeekBar

将刻度线对准Android SeekBar

作者:互联网

我试图在Android的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);

        }

标签:seekbar,android
来源: https://codeday.me/bug/20191120/2042580.html