当前位置: 首页 > 编程笔记 >

Android关于SeekBar无法点击到最大值问题解决方法记录(推荐)

范鸿畅
2023-03-14
本文向大家介绍Android关于SeekBar无法点击到最大值问题解决方法记录(推荐),包括了Android关于SeekBar无法点击到最大值问题解决方法记录(推荐)的使用技巧和注意事项,需要的朋友参考一下

先说一下问题发现经过吧,最近项目定制系统设置应用,其中亮度条一开始是0-255值变化,使用了SeekBar控件去调节,后来需求变更将值划分为10个等级,也就是进度条的max为9,可以说一下子进度条从0-255变成了0-9范围缩小了很多,范围缩小,html" target="_blank">控件没有变,也就是每个进度点到下一个进度点的距离就变长了,众所周知,SeekBar是支持拖动以及点击两种方式控制,在我无聊瞎点时发现,我怎么点,这个进度条都无法通过点击跳到最大值,瞬间也就从划水模式变成认真模式=_=||。顺便也就写下来记录一下,防止以后忘记。

经过分析,其实问题原因也大概是这样的,SeekBar的进度大家都知道返回是一个int的整形,那么这个整形怎么取呢?这里也不细说各种判定,简略说也就和我们平时计算一个线段平均分N段一样,那么也就是每个进度点都有一段范围长的,如上面我的范围是0-9取值其实是10个数,10个值所以我们进度条肯定是将线段长度分成9段[一条线段是有两个端点,取n个值就划分成n-1段],那么也相当于一个蛋糕只切了9份,那么最后肯定有一个数字分不到范围,所以假设我们控件长度是90,分0-9,,那么其实取给0的范围是[0,10)这么一个集合,以此类推1的范围则是[10,20)...略,所以分到最后也就最大值9没分到范围,这里说的是范围,因为点击时,是看点击范围在哪里然后给他移动到代表那个范围的点,那么9到底在哪里呢?其实9也算有范围,咳咳,打脸自己,其实9的范围就是[90],没错,最大值,你只能取最后满足它100%的数。所以不是点不到,而是这个点太难点到了。唉--平时话少,也不知道解释得到位不到位,若还是不懂,可以自己实际用一个SeekBar把控件长度定大一点,取值的max定小一点,然后自己体会一下吧= =!

那么为啥我们拖动可以到最大值呢?其实这个很好解释,因为拖动时控件处理MOVE事件,大家应该知道控件touch事件,你要抬起手这个焦点才会被释放,所以我们一直拖,控件都会处理这个事件,而能到最大值原因是我们实际是拖到了或者超过最大值位置的点那么此时通过一系列计算判定也就跑到了最大值去了

说完原因,那么接下来就说一下解决方法吧,刚刚说了,最大值的判定范围太小了,那么思路就是扩充最大值的判定范围不就可以了么?

方法一:我们都知道控件除了本身实际长度外,其实还有很多额外的量,如android:layout_marginXXX, android:paddingXXX,但是margin并不会计算在控件内部范围,但是padding就不一样,所以我们可以通过增加padding从而增加点击范围,从而使得最大值的判定范围增大。如增加个android:paddingRight="20dp" 我目前用的是这种

方法二:原理同上,不过是通过setTouchDelegate方法去增大触控范围,具体这个方法使用方式和局限性大家可以自己百度[我就是这么懒=_=|]

方法三:还有一种方法那就是自己重新处理相关touch事件,修改范围判定算法,把蛋糕重新切一下,如把8的判定改成是[80,85)那么剩下的就分给9之类的,这算是一个最好的解决方法,也是最麻烦的[所以我懒,也没去做],仅提供思路。

以上所述是小编给大家介绍的Android关于SeekBar无法点击到最大值问题解决方法详解整合,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对小牛知识库网站的支持!

 类似资料:
  • 本文向大家介绍PHP magento后台无法登录问题解决方法,包括了PHP magento后台无法登录问题解决方法的使用技巧和注意事项,需要的朋友参考一下 PHP magento后台无法登解决办法 可能很多朋友有同样的经历,magento在服务器中配置域名是可以正常的访问了,但是在本地配置后却无法登录后台,账号密码登录的时候发现出现空白,无法跳转到后台,本文章向大家介绍两种解决本地magento后

  • 本文向大家介绍js关于getImageData跨域问题的解决方法,包括了js关于getImageData跨域问题的解决方法的使用技巧和注意事项,需要的朋友参考一下 在学习h5的时候,canvas标签中getImageData()报错:security error! 具体代码如下(chrome浏览器): 报错信息如下:Uncaught SecurityError: Failed to execute

  • 本文向大家介绍python+selenium 定位到元素,无法点击的解决方法,包括了python+selenium 定位到元素,无法点击的解决方法的使用技巧和注意事项,需要的朋友参考一下 报错 需要点击的按钮页面显示不了,需要下拉滚动条,能看到按钮了才能点 1、尝试下拉一段滚动条,让按钮能看到 OK,能点到了 2、不是下拉加载的页面,用方法一有点傻,尝试让滚动条定位到指定元素位置 ok,滚动到元素

  • 本文向大家介绍关于Centos安装fabric遇到的问题和解决方法,包括了关于Centos安装fabric遇到的问题和解决方法的使用技巧和注意事项,需要的朋友参考一下 在centos 上用命令: 安装是会出现如下报错,因为太多,我就不全部贴了,部分内容如下: 出现这种问题是因为没有python-devel包导致,直接安装即可: 总结 以上就是这篇文章的全部内容,希望对有需要的人能有所帮助,如果有疑

  • 本文向大家介绍Java 关于eclipse导入项目发生的问题及解决方法(推荐),包括了Java 关于eclipse导入项目发生的问题及解决方法(推荐)的使用技巧和注意事项,需要的朋友参考一下 今天通过eclipse导入了几个项目,项目名出现红叉,对于我这样的强迫症来说是无法容忍的,故现做总结,遇到同学可按照以下方法来操作。 改动的地方主要是两个方面: 1.Tomcat版本问题。 此问题是由于我发现