Android 13 SeekBar使用 大坑:XML和代码设置最大最小值,两种方式遥控器每次调节默认变化值不同!

文章讲述了在Android应用中,开发者在SeekBar的XML配置和代码中设置最大值/最小值时遇到的问题。尽管参数相同,但XML默认每次调节1%,动态设置可能导致大于1%的步长,影响遥控器控制的体验。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

写在前面:Android里有时候会出现一个很恶心的特性:明明XML设置和代码里动态加进去的设置参数一样,按道理来说效果应该一样,但是却不一样。。。。。。
我在使用SeekBar的时候就发现了这个恶心的特点,下面记录一下,免得再有无辜者被折磨。

  首先,先看下我XML中对SeekBar最大最小的设置:

        <com.color.notification.view.quick_settings.CustomSeekBar_Brightness
            android:id="@+id/brightnessSeekBar"
            android:layout_width="190dp"
            android:layout_height="20dp"
            android:clickable="true"
            android:focusable="true"
            android:focusableInTouchMode="false"
            android:max="255"
            android:min="0"
            android:paddingStart="0dp"
            android:paddingEnd="0dp"
            android:background="@android:color/transparent"
            android:progressDrawable="@drawable/custom_brightness_seekbar"
            android:thumb="@null" />

  最大值255,最小值0。当我开发完和同事激情对接时,却发现了问题:他哪边也在改亮度,也用了SeekBar,最大值最小值也设置成了255、0,我需要和他做一个同步,就是用户调节亮度,我们两边的表现是一致的,但是问题来了——》我这边用遥控器遥控,左右调节每次都只能调1%,他哪边却是每次5%,我就问他做了什么客制化修改吗?他说完全没有,我们就激情交流了一会,然后我检查了下他的代码,确实没什么特别修改的地方,只是最大值最小值设定改在了代码里如下:

        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
            brightnessSeekBar.setMin(0);
        }
        brightnessSeekBar.setMax(255);

  我感觉哪里有问题都不会是这里有问题,结果还是我天真了。。。。。。最终排查下来,我是ZZ。“Android敢杀我的马!!!!!”
  这两个有区别吗?放一起看下:

            android:max="255"
            android:min="0"
            
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
            brightnessSeekBar.setMin(0);
        }
        brightnessSeekBar.setMax(255);

写在末尾:如果你用了SeekBar且有遥控的需求,千万注意——》XML中设置最大值最小值,和代码中初始化SeekBar时同态设置最大值最小值,即使参数一样,最后遥控器调节展现的效果是不一样的。XML默认每次1%,动态设置的大于1%。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

苏苏码不动了

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值