2013-03-18 1 views
2

J'utilise un barre de recherche dans mon code avec deux boutons pour augmenter et diminuer la gamme min et valeurs maximum de barre de recherche devrait être de -30 à 480.SeekBar avec des valeurs négatives sur Android

Can une s'il vous plaît suggérer comment définir la plage dans la barre de recherche de -30 à 480.

+4

Pas possible autant que je sache. Il suffit de traduire la gamme; une simple soustraction ne sera pas trop dure. ;) –

+0

pas différent pour les valeurs positives ou négatives pour le minimum et le maximum. Vous avez juste besoin de faire en sorte que le maximum soit la valeur la plus élevée (c'est-à-dire, "moins négatif"). –

+0

soustrayant 30 de la valeur de gamme travaillé pour moi.thanks. –

Répondre

1

Voici une classe que j'utilise pour cela:

import android.content.Context; 
import android.support.v7.appcompat.R; 
import android.util.AttributeSet; 
import android.widget.SeekBar; 

/** 
* Created by HeWhoWas on 5/10/13. 
*/ 
public class NegativeSeekBar extends SeekBar { 

    protected int minimumValue = 0; 
    protected int maximumValue = 0; 
    protected OnSeekBarChangeListener listener; 

    public NegativeSeekBar(Context context){ 
     super(context); 
     setUpInternalListener(); 
    } 

    public NegativeSeekBar(Context context, AttributeSet attrs){ 
     super(context, attrs); 
     setUpInternalListener(); 
    } 

    public NegativeSeekBar(Context context, AttributeSet attrs, int defStyle){ 
     super(context, attrs, defStyle); 
     setUpInternalListener(); 
    } 

    public void setMin(int min){ 
     this.minimumValue = min; 
     super.setMax(maximumValue - minimumValue); 
    } 

    public void setMax(int max){ 
     this.maximumValue = max; 
     super.setMax(maximumValue - minimumValue); 
    } 

    @Override 
    public void setOnSeekBarChangeListener(OnSeekBarChangeListener listener){ 
     this.listener = listener; 
    } 

    private void setUpInternalListener(){ 
     super.setOnSeekBarChangeListener(new OnSeekBarChangeListener() { 
      @Override 
      public void onProgressChanged(SeekBar seekBar, int i, boolean b) { 
       if(listener != null){ 
        listener.onProgressChanged(seekBar, minimumValue + i, b); 
       } 
      } 

      @Override 
      public void onStartTrackingTouch(SeekBar seekBar) { 
       if(listener != null) 
        listener.onStartTrackingTouch(seekBar); 
      } 

      @Override 
      public void onStopTrackingTouch(SeekBar seekBar) { 
       if(listener != null) 
        listener.onStopTrackingTouch(seekBar); 
      } 
     }); 
    } 
} 
+0

Merci ... cette classe m'a beaucoup aidé. – ravi

Questions connexes