AndroidのSeekBar

5384 ワード

SeekBarを使用する場合、よくある質問は次のとおりです.
1.seekbarのドラッグボタンが中央にありません.
2.seekbarの高さに問題があります.
3.seekbarのドラッグボタンが一番左、一番右に不完全に表示されます.
 
まず、上記の問題を解決するには、seekbarを記述する際にlayoutファイルが画像のサイズを正しく設定しているかどうか、画面密度と画像が対応する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>