网上的SeekBar自定义样式的资料很多,大多是抄来抄去。我最近用到这个,也从网上抄了一个,但是遇到不少问题,其中一个就是SeekBar的背景条不显示,最后才找到解决方法。


1. 使用自定义SeekBar

    <SeekBar        android:id="@+id/ctrl_seekBar"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:layout_weight="1"        android:progressDrawable="@drawable/custom_seekbar"        android:thumb="@drawable/cust_seekbar_thumb"        android:maxHeight="4dp"        android:minHeight="4dp" />


其中最重要的就是

android:progressDrawable="@drawable/custom_seekbar"
android:thumb="@drawable/cust_seekbar_thumb"

android:progressDrawable指定了seekbar的样式

android:thumb指定了seekbar的按钮


SeekBar效果图:


2. 自定义SeekBar:custom_seekbar

<?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>            <solid android:color="#ff58595c" />            <size android:height="5dp" />        </shape>    </item>    <item android:id="@android:id/secondaryProgress">        <clip>            <shape>                <solid android:color="#ff58595c"/>                <size android:height="5dp" />            </shape>        </clip>    </item>    <item android:id="@android:id/progress">        <clip>            <shape>                <solid android:color="#ff5292fb"/>                <size android:height="5dp" />            </shape>        </clip>    </item></layer-list>

seekbar共有3个状态条:background, progress, secondarProgress.


<layer-list>将多个图片或上面两种效果按照顺序层叠起来.

Android的文档中就专门提到了layer-list多用progressbar

关于shape,selector,layer-list参见:

Android: shape,selector,layer-list辨析

<clip>的功能就是裁剪

其它标签不说了.

我之前碰到的SeekBar的background条显示不出来就是因为把background也用clip包起来了,这是很多其它文章也是这么干的.真是害得我折腾了很久才找出原因.

3. Thumb 自定义cust_seekbar_thumb

<?xml version="1.0" encoding="utf-8"?><selector xmlns:android="http://schemas.android.com/apk/res/android">    <item android:state_focused="true" android:state_pressed="false"        android:drawable="@drawable/ic_seekbar" />    <item android:state_focused="true" android:state_pressed="true"        android:drawable="@drawable/ic_seekbar_down" />    <item android:state_focused="false" android:state_pressed="true"        android:drawable="@drawable/ic_seekbar_down" />    <item android:drawable="@drawable/ic_seekbar" /></selector>

4. 参考文献

[1]自定义漂亮的Android SeekBar样式

[2] Android API Guids


注:文献1的background使用clip包起来的


更多相关文章

  1. 自定义ProgressBar样式
  2. android中listview的一些样式设置,自定义ListView行间的分割线
  3. Android 样式系统 | 主题背景和样式
  4. android设置控件样式(边框颜色,圆角)和图片样式(圆角)
  5. android上多样式文本的使用

随机推荐

  1. android 2.1系统自带资源--- 系统图标资
  2. Android(安卓)新手入门(2)-常用控件
  3. Android实战技巧之二十二:Android(安卓)5.
  4. Android(安卓)扩大点击区域
  5. android 2.1系统自带资源--- 系统图标资
  6. 一个 android 资料
  7. ReactNative android离线加载
  8. android布局属性预览
  9. Android字体大小与titile标题居中设置
  10. android开发(36) Android(安卓)WebView背