2013-03-26 3 views

Répondre

13

SeekBar étend ProgressBar.

ProgressBar a une méthode

public void setMax(int max) 

Comme il accepte seulement int vous aurez à faire une conversion d'une valeur int pour obtenir le flotteur que vous êtes après.

Quelque chose comme ça devrait faire l'affaire:

mSeekBar.setMax(4); 
//max = 4 so the possible values are 0,1,2,3,4 
seekbar.setOnSeekBarChangeListener(new OnSeekBarChangeListener(){ 
    public void onProgressChanged(SeekBar seekBar, int progress,boolean fromUser) 
    { 
     // TODO Auto-generated method stub 
     Toast.makeText(seekBar.getContext(), "Value: "+getConvertedValue(progress), Toast.LENGTH_SHORT).show(); 
    } 
    public void onStartTrackingTouch(SeekBar seekBar) 
    { 
     // TODO Auto-generated method stub 
    } 
    public void onStopTrackingTouch(SeekBar seekBar) 
    { 
     // TODO Auto-generated method stub 
    } 
}); 

Cette partie sera dans votre onCreate() et vous devrez utiliser findViewById() ou quelque chose pour obtenir une référence à mSeekBar.

public float getConvertedValue(int intVal){ 
    float floatVal = 0.0; 
    floatVal = .5f * intVal; 
    return floatVal; 
} 

Cette partie est une autre méthode que vous pouvez ajouter à votre activité pour convertir des valeurs int en valeurs flottantes dans la plage dont vous avez besoin.

+0

bon, merci !! Maintenant, j'ai besoin de définir la progression de la barre de recherche, mais la fonction .progress n'accepte que les valeurs int, comment puis-je convertir le float en int dans ce projet? – kosma822

+0

@ kosma822 vous utilisez la méthode setProgress (int). Lorsque vous l'appelez, il doit à son tour appeler la méthode onProgressChange() dans votre programme d'écoute qui effectuera la conversion pour flotter pour vous avec cette méthode qui est le deuxième morceau de code dans ma réponse. Il suffit de changer le Toast dans mon exemple pour tout ce que vous voulez faire avec la valeur float. – FoamyGuy

0

Vous devriez implémenter votre propre barre de recherche personnalisée, faire sauter entre les valeurs souhaitées et de s'y tenir, vous pouvez trouver des informations utiles ici:

Making A Custom Skinny ProgressBar/Seekbar

+0

Cette question vise plus à personnaliser l'apparence de la barre de recherche plutôt que la fonctionnalité des valeurs qui sont possibles. Pour obtenir l'effet que OP est après il n'y a pas besoin de faire une barre de recherche personnalisée. Il suffit de convertir d'int en float pour la gamme de valeurs dont ils ont besoin. – FoamyGuy

+0

Je n'ai pas besoin d'une mise en page personnalisée, je neet pour le faire par programme, et j'ai besoin d'un exemple:/ – kosma822

1
 textView.setProgress(0); 
    textView.incrementProgressBy(1); 
    textView.setMax(4); 

     public void onProgressChanged(SeekBar seekBar, int progress, 
        boolean fromUser) { 

         float progressD=(float) progress/2; 
         textView.setText(String.valueOf(progressD)); 

// de 0 à 2 pas 0,5