seekbar的基本使用,以及滑块遮挡问题

seekbar的基本使用

在布局文件中配置:

1、maxHeight和minHeight值保持一样控制进度条的高度;
2、progressDrawable自定义显示进度条底色、缓冲、播放进度对应的颜色,也可以直接使用图片;
3、thumb自定义滑块的图片;

  <!--滑块显示不透明需设置 android:splitTrack="false"-->
                <SeekBar
                    android:id="@+id/seekbar_brightness"
                    android:layout_width="warp_content"
                    android:layout_height="warp_content"
                    android:maxHeight="2dp"
                    android:paddingStart="0dp"
                    android:paddingEnd="0dp"
                    android:splitTrack="false"
                    android:background="@null"
                    android:focusable="false"
                    android:progressDrawable="@drawable/seekbar_progress"
                    android:thumb="@drawable/progress_bar_slider" />

自定义进度条可以直接颜色,也可以直接图片:

颜色填充:

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    
    <item android:id="@android:id/background">
       <shape>
            <corners android:radius="5dip" />
            <gradient
                    android:startColor="#ff364956"
                    android:centerColor="#ff444444"
                    android:centerY="0.75"
                    android:endColor="#ff00112e"
                    android:angle="90"
            />
        </shape>
    </item>
    
    <item android:id="@android:id/secondaryProgress">
       <clip>
            <shape>
                <corners android:radius="5dip" />
                <gradient
                        android:startColor="#80364956"
                        android:centerColor="#802f67a6"
                        android:centerY="0.75"
                        android:endColor="#8000112e"
                        android:angle="270"
                />
            </shape>
        </clip>
    </item>
    
    <item android:id="@android:id/progress">
        <clip>
            <shape>
                <corners android:radius="5dip" />
                <gradient
                        android:startColor="#ff9ee5ff"
                        android:centerColor="#ff9ee5ff"
                        android:centerY="0.75"
                        android:endColor="#ff9ee5ff"
                        android:angle="90"
                />
            </shape>
        </clip>
    </item>
    
</layer-list>

图片填充:

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <!--定义seekbar滑动条的底色-->
    <item android:id="@android:id/background">
        <bitmap android:src="@drawable/progress_bar_n"/>

    </item>
    <!--定义seekbar滑动条进度颜色-->
    <item android:id="@android:id/progress">
        <bitmap android:src="@drawable/progress_bar_d"/>
        <!--
        <clip>
            <shape>
                <corners android:radius="1dp" />
                <gradient
                    android:startColor="#e9af0903"
                    android:endColor="#ed2203"
                    android:type="linear"
                    android:centerX="100"
                    android:angle="0" />
            </shape>
        </clip>
        -->
    </item>
</layer-list>

开发使用中有时会遇到滑块被遮挡的问题:

在这里插入图片描述

通常为了避免thumb滑块被覆盖我们会设置:

android:thumbOffset="0dip"
android:paddingLeft="0dip"
android:paddingRight="0dip"
若在代码有重新对seekbar设置进度条与滑块:
seek_tonghb.setProgressDrawable(R.drawable.seek_bg);
seek_tonghb.setThumb(R.drawable.thumb);

在代码中还需要加上

mSeekbar.setPadding(0, 0, 0, 0);
mSeekbar.setThumbOffset(0);

若以上设置均不能解决滑块被遮问题,在父控件添加以下属性:

android:clipChildren="false"
android:clipToPadding="false" 
 <LinearLayout
                android:id="@+id/relate_beigld"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:gravity="center_vertical"
                android:orientation="horizontal"
                android:focusable="false"
                android:visibility="visible"
                android:clipChildren="false"
                android:clipToPadding="false">
            
                <!--滑块显示不透明需设置 android:splitTrack="false"-->
                <SeekBar
                    android:id="@+id/seekbar_brightness"
                    android:layout_width="543dp"
                    android:layout_height="44dp"
                    android:paddingStart="0dp"
                    android:paddingEnd="0dp"
                    android:maxHeight="2dp"
                    android:splitTrack="false"
                    android:background="@null"
                    android:focusable="false"
                    android:progressDrawable="@drawable/seekbar_progress"
                    android:thumb="@drawable/progress_bar_slider" />

</LinearLayout>

或者去除seekbar以下属性:

android:thumbOffset="0dip"
android:paddingLeft="0dip"
android:paddingRight="0dip"
  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值