2012-03-20 10 views

Respuesta

1

Debe llamar al setOnSeekbarChangeListener() en su objeto de barra de búsqueda y, por ejemplo, su actividad implementar OnSeekbarChangeListener() y en esa función puede hacer lo que desee.

22

Quizás debería tratar de usar un controlador? Lo uso en una aplicación mía y funciona bien.

1) Al crear SeekBar:

// ... 
seekBarHandler = new Handler(); // must be created in the same thread that created the SeekBar 
seekBar = (SeekBar) findViewById(R.id.my_seekbar); 
// you should define max in xml, but if you need to do this by code, you must set max as 0 and then your desired value. this is because a bug in SeekBar (issue 12945) (don't really checked if it was corrected) 
seekBar.setMax(0); 
seekBar.setMax(max); 
seekBar.setProgress(progress); 
// ... 

2) Cuando se hace clic en el botón

// ... 
seekBarHandler.post(new Runnable() { 
    @Override 
    public void run() { 
     if (seekBar != null) { 
      seekBar.setMax(0); 
      seekBar.setMax(max); 
      seekBar.setProgress(newProgress); 
     } 
    } 
}); 
// ... 
+0

¿Por qué llamas setMax (int) dos veces? Parece que el segundo solo anula el primero. – Alyoshak

+0

"esto se debe a un error en SeekBar (problema 12945) (realmente no se verifica si se corrigió)" – PFROLIM

2

También puede utilizar:

mSeekBar.refreshDrawableState(); 

después de establecer el progreso.

1

La solución que funciona para mí:

mSeekbaBar.setProgress(progress); 
mSeekbaBar.post(new Runnable() { 
      @Override 
      public void run() { 
       mSeekbaBar.setProgress(progress); 
      } 
     }); 

Se elimina el parpadeo del pulgar

Cuestiones relacionadas