使用SeekBar的時候,經常遇到的問題有如下:
1. seekbar的拖動按鈕沒有居中。
2. seekbar的高度有問題。
3. seekbar的拖動按鈕在最左最右顯示不全。
首先,要解決上述問題,要先檢查layout文件在描述seekbar時,有沒有正確設置圖片的尺寸和檢查屏幕密度與圖片是否放置在相應的drawable文件夾中(drawable-hdpi, drawable-mdpi, drawable-ldpi).
在確保圖片資源正確的情況下,參考如下XML:
layout
- <SeekBar
- android:layout_width="321px"
- android:layout_height="wrap_content"
- android:layout_centerInParent="true"
- android:maxHeight="12px"
- android:minHeight="12px"
- android:paddingLeft="18px"
- android:paddingRight="18px"
- android:max="100"
- android:progressDrawable="@drawable/seekbar_style"
- android:thumb="@drawable/drag_ball"
- android:id="@+id/seekBar"/>
seekbar_style
- <layer-list
- xmlns:android="http://schemas.android.com/apk/res/android">
- <item
- android:id="@android:id/background"
- android:drawable="@drawable/drag_bar_background"/>
- <item
- android:id="@android:id/progress"
- android:drawable="@drawable/drag_bar_foreground"/>
- <item
- android:id="@android:id/secondaryProgress"
- android:drawable="@drawable/drag_bar_foreground"/>
- </layer-list>
簡單解釋下seekbar中幾個重要的屬性:
android:layout_height="wrap_content"
//建議使用wrap_content,否則一定要保證設置的值不小於seekbar圖片資源中的最高值
android:maxHeight="12px"
android:minHeight="12px"
//說明進度條的最低和最大高度,解決高度問題。
android:paddingLeft="18px"
android:paddingRight="18px"
//解決拖動按鈕在最左最右顯示不全的問題,padding的值一般是thumb的一半寬度。
android:progressDrawable="@drawable/seekbar_style"
//設置了此值,就表示使用自定義的進度條樣式,在其中可以設置進度條背景圖,進度條圖,緩衝條圖。
android:thumb="@drawable/drag_ball"
//seekbar的拖動按鈕圖片
android系統自帶的自定義樣式例子:
seekbar_style
- <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="#ff9d9e9d"
- android:centerColor="#ff5a5d5a"
- android:centerY="0.75"
- android:endColor="#ff747674"
- android:angle="270"/>
- </shape>
- </item>
- <item android:id="@android:id/secondaryProgress">
- <clip>
- <shape>
- <corners android:radius="5dip" />
- <gradient
- android:startColor="#80ffd300"
- android:centerColor="#80ffb600"
- android:centerY="0.75"
- android:endColor="#a0ffcb00"
- android:angle="270"/>
- </shape>
- </clip>
- </item>
- <item android:id="@android:id/progress">
- <clip>
- <shape>
- <corners android:radius="5dip" />
- <gradient
- android:startColor="#ff0099CC"
- android:centerColor="#ff3399CC"
- android:centerY="0.75"
- android:endColor="#ff6699CC"
- android:angle="270"/>
- </shape>
- </clip>
- </item>
- </layer-list>
thumb
- <selector xmlns:android="http://schemas.android.com/apk/res/android">
- <!-- 按下狀態-->
- <item
- android:state_focused="true"
- android:state_pressed="true"
- android:drawable="@drawable/thumb_pressed" />
- <!-- 普通無焦點狀態 -->
- <item
- android:state_focused="false"
- android:state_pressed="false"
- android:drawable="@drawable/thumb_normal" />
- <!-- 有焦點狀態-->
- <item
- android:state_focused="true"
- android:state_pressed="false"
- android:drawable="@drawable/thumb_focused" />
- <!-- 有焦點 -->
- <item
- android:state_focused="true"
- android:drawable="@drawable/thumb_focused" />
- </selector>
轉自:http://haking.iteye.com/blog/1118769