2011-10-06 64 views
2

我想要一個SeekBar,當用戶與它交互時(通過將其拖動到所需位置)出現拇指並在交互後消失。SeekBar的拇指只有在觸摸時纔會出現

今天我SeekBar看起來是這樣的:

<SeekBar android:id="@+id/seekBar_volume" 
     android:layout_width="fill_parent" 
     android:progressDrawable="@drawable/custom_player_seekbar_background" 
     android:paddingTop="10px" 
     android:paddingBottom="10px" 
     android:thumb="@drawable/myThumb" 
     android:paddingLeft="30px" 
     android:paddingRight="30px" 
     android:minHeight="6dip" 
     android:maxHeight="6dip" 
     android:layout_height="wrap_content" 
     android:layout_centerVertical="true"/> 

拇指位置只與用戶交互的改變(有點像「音量控制」)。

seekBarVolume.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() { 

     public void onStopTrackingTouch(SeekBar arg0) { 

     } 

     public void onStartTrackingTouch(SeekBar arg0) { 

     } 

     public void onProgressChanged(SeekBar arg0, int arg1, boolean arg2) { 
      audioManager.setStreamVolume(AudioManager.STREAM_MUSIC, arg1, 0); 
     } 
}); 

我試圖用selector的功能,以及自定義XML來處理不同的狀態,我想設置拇指的繪製,但它並沒有提前上班=/

感謝您的任何幫助

回答

2

由於Romain Guy和一些bug修復,它的工作完美...

seekBarVolume.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() { 

    public void onStopTrackingTouch(SeekBar arg0) { 
     // TODO Auto-generated method stub 
     seekBarVolume.setThumb(null); 
    } 

    public void onStartTrackingTouch(SeekBar arg0) { 
     seekBarVolume.setProgress(0); 

     drawable = getResources().getDrawable(R.drawable.bt_do_player); 
     final int quarterHeight = drawable.getIntrinsicHeight()/4; 
     final int halfWidht = drawable.getIntrinsicWidth()/2; 

     drawable.setBounds(new Rect(-halfWidht, 
       -quarterHeight, 
       halfWidht, 
       3*quarterHeight)); 
     seekBarVolume.setThumb(drawable); 

     seekBarVolume.setProgress(audioManager.getStreamVolume(AudioManager.STREAM_MUSIC)); 


    } 

    public void onProgressChanged(SeekBar arg0, int arg1, boolean arg2) { 
     audioManager.setStreamVolume(AudioManager.STREAM_MUSIC, arg1, 0); 
    } 
}); 
+1

setThumb(空)不工作在所有設備上的好!有時甚至會導致NullPointerException。更好的方法:setThumb(bHide?getResources()。getDrawable(R.color.transparent):getResources()。getDrawable(R.drawable.seekbar_handle)); – goRGon

相關問題