将刻度线对准Android SeekBar

将刻度线对准Android SeekBar,第1张

概述我试图在Android的SeekBar上放置一些刻度标记指示器.我能够生成带有刻度线的背景,但是我无法找到一种方法将刻度线与实际的SeekBar线对齐.从屏幕截图中可以看到,刻度线实际上在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);        }
总结

以上是内存溢出为你收集整理的将刻度线对准Android SeekBar全部内容,希望文章能够帮你解决将刻度线对准Android SeekBar所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1080137.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-27
下一篇 2022-05-27

发表评论

登录后才能评论

评论列表(0条)

保存