关于Android studio seekBar的thumb部分显示的bug和滚动条setMax后无法播放的bug

笔者最近在完善毕设安卓播放器的ui,需要做一个视频拖动控件,使用自定义控件时却遇到一个SeekBar的拖动按钮上下显示不全的bug,网上搜到的解决方式无非以下两个:

(1)把整个大小改成wrapContent(2)设置属性:android:thumbOffset="0dip"

缺点:第一个方法会把SeekBar拉宽,而笔者要的是SeekBar很细(2dp)但是又要能完整显示拖动条的效果(类似B站)。第二个方法只能说让按钮在最左或最右边的部分不会在拉伸时隐藏,并不能解决按钮上下部分显示不全的问题。

原因分析:核心问题是SeekBar的高度不够用,只能显示控件范围内的内容,所以按钮显示不全,但是增加高度让按钮显示出来就连着进度条的宽度也增加了。

解决方案:用相对布局设置两层的toolBar重合在一个位置,上层显示拖动按钮,把progressDrawable(拖动条底下的背景色)设置成透明色,下层显示拖动背景色,按钮设置透明并在代码中的setOnTouch中捕获触摸事件禁止拖动。当上层拖动时通过监听拖动事件来调用下层的setProgress方法来设置进度,就可以实现上层拖动按钮完全显示的情况下,下层进度条颜色跟进。

java层代码:

    avToolBarBottom=findViewById(R.id.avseekBarBottom);
        avToolBarTop=findViewById(R.id.avseekBarTop);
        avToolBarBottom.setOnTouchListener(new View.OnTouchListener() {
            @Override
            public boolean onTouch(View view, MotionEvent motionEvent) {
                return true;
            }
        });

        avToolBarTop.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
            @Override
            public void onProgressChanged(SeekBar seekBar, int i, boolean b) {
                avToolBarBottom.setProgress(i);
            }

            @Override
            public void onStartTrackingTouch(SeekBar seekBar) {

            }

            @Override
            public void onStopTrackingTouch(SeekBar seekBar) {

            }
        });

(2)seekBar滚动条无法播放,笔者的原因是因为setMax的值过大,这样是有可能导致不能播放的,因此对此要多注意。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值