Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


Cómo establecer el valor mínimo y máximo de búsqueda

Tengo un buscador y tratando de establecer el valor de 60 a 180 para uno y 40 a 190 para el segundo en el paso de 1.

sb1 = (SeekBar) findViewById(R.id.progresss); sb1.setOnSeekBarChangeListener(new OnSeekBarChangeListener() { @Override public void onStopTrackingTouch(SeekBar seekBar) { // TODO Auto-generated method stub //int inVal = Integer.parseInt(String.valueOf(seekBar.getProgress())); //inVal =+ 70; //Toast.makeText(getApplicationContext(), String.valueOf(inVal),Toast.LENGTH_LONG).show(); } @Override public void onStartTrackingTouch(SeekBar seekBar) { // TODO Auto-generated method stub } @Override public void onProgressChanged(SeekBar seekBar, int progress,boolean fromUser) { // TODO Auto-generated method stub progress =+ 70; Toast.makeText(getApplicationContext(), String.valueOf(progress),Toast.LENGTH_LONG).show(); } }); 

no está trabajando. ¿Alguna de idea de cómo arreglarlo?

  • Java - Android - Split Activity / Class en varios archivos para una mejor organización (solución)
  • Android WebView Reproducción de vídeo HTML5 / h.264 / mp4, Cómo llegar a MediaPlayer
  • Libgdx utiliza ScreenUtils de forma asincrónica y no detiene el bucle del juego
  • Android ClassNotFoundException
  • Primavera RestTemplate HTTP Post con parámetros causa error 400 solicitud incorrecta
  • Utilice bases de datos pre-pobladas con Realm
  • ERROR: createWindowSurface falló EGL_BAD_ALLOC
  • FileNotFoundException al llamar a webservice
  • 10 Solutions collect form web for “Cómo establecer el valor mínimo y máximo de búsqueda”

     seekbar.setOnSeekBarChangeListener(new OnSeekBarChangeListener() { @Override public void onStopTrackingTouch(SeekBar seekBar) { } @Override public void onStartTrackingTouch(SeekBar seekBar) { } @Override public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { int MIN = 5; if (progress < MIN) { value.setText(" Time Interval (" + seektime + " sec)"); } else { seektime = progress; } value.setText(" Time Interval (" + seektime + " sec)"); } }); 

    Sé que la respuesta ya está elegido y estoy un poco tarde en la respuesta, pero quería compartir mi respuesta.

    No puede establecer el valor min de un SeekBar (siempre 0) y no puede establecer el valor de step de un SeekBar (siempre 1).

    Si desea establecer el valor de 60 a 180 con un paso de 1, esta es la manera de hacerlo:

     int step = 1; int max = 180; int min = 60; // Ex : // If you want values from 3 to 5 with a step of 0.1 (3, 3.1, 3.2, ..., 5) // this means that you have 21 possible values in the seekbar. // So the range of the seek bar will be [0 ; (5-3)/0.1 = 20]. seekbar.setMax( (max - min) / step ); seekbar.setOnSeekBarChangeListener( new OnSeekBarChangeListener() { @Override public void onStopTrackingTouch(SeekBar seekBar) {} @Override public void onStartTrackingTouch(SeekBar seekBar) {} @Override public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { // Ex : // And finally when you want to retrieve the value in the range you // wanted in the first place -> [3-5] // // if progress = 13 -> value = 3 + (13 * 0.1) = 4.3 double value = min + (progress * step); } } ); 

    Pongo otro ejemplo dentro del código para que entiendas las matemáticas.

    Espero que ayude

    Puede establecer el valor máximo para su barra de búsqueda utilizando este código:

      sb1.setMax(100); 

    Esto establecerá el valor máximo para su barra de búsqueda.

    Pero no se puede establecer el valor mínimo, pero sí se puede hacer algo de aritmética para ajustar el valor. Utilice la aritmética para ajustar el valor requerido por la aplicación.

    Por ejemplo, supongamos que tiene valores de datos de -50 a 100 que desea mostrar en la SeekBar. Establezca el máximo de SeekBar como 150 (100 – (- 50)), luego agregue 50 al valor bruto para obtener el número que debe usar al establecer la posición de la barra.

    Puede obtener más información a través de este enlace .

    Seek Bar tiene métodos para establecer valores máximos, pero no para establecer el valor mínimo aquí escribo un código para establecer el valor de barra de búsqueda mínima cuando agregamos este código, entonces los valores de la barra de búsqueda no menos entonces valor de mim intenta esto su trabajo bien para mí

    / * Este método llama después de buscar el cambio de valor de la barra * /

      public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { /* Check the current seekbar value is greather than min value*/ if (progress < MIN_VALUE) { /* if seek bar value is lesser than min value then set min value to seek bar */ seekBar.setProgress(MIN_VALUE); } } 

    La forma más fácil de establecer un valor mínimo y máximo en una barra de búsqueda para mí: si desea valores min = 60 a máx = 180, esto es igual a min = 0 max = 120. Así que en su buscador xml conjunto de propiedad:

     android:max="120" 

    Min será siempre 0 .

    Ahora solo necesitas hacer lo que estás haciendo, agrega la cantidad para obtener el valor traducido en cualquier cambio, en este caso +60.

      seekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() { @Override public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { int translatedProgress = progress + 60; } @Override public void onStartTrackingTouch(SeekBar seekBar) { } @Override public void onStopTrackingTouch(SeekBar seekBar) { } }); 

    Tenga cuidado con la propiedad seekbar android: progreso, si cambia el rango debe recalcular su progreso inicial. Si quieres 50%, max / 2, en mi ejemplo 120/2 = 60;

    Ajustar el valor máximo y mínimo del buscador

     seekbar have method that setmax(int position) and setProgress(int position) 

    Gracias

    Copie esta clase y utilice Custom Seek Bar:

     public class MinMaxSeekBar extends SeekBar implements SeekBar.OnSeekBarChangeListener { private OnMinMaxSeekBarChangeListener onMinMaxSeekBarChangeListener = null; private int intMaxValue = 100; private int intPrgress = 0; private int minPrgress = 0; public int getIntMaxValue() { return intMaxValue; } public void setIntMaxValue(int intMaxValue) { this.intMaxValue = intMaxValue; int middle = getMiddle(intMaxValue, minPrgress); super.setMax(middle); } public int getIntPrgress() { return intPrgress; } public void setIntPrgress(int intPrgress) { this.intPrgress = intPrgress; } public int getMinPrgress() { return minPrgress; } public void setMinPrgress(int minPrgress) { this.minPrgress = minPrgress; int middle = getMiddle(intMaxValue, minPrgress); super.setMax(middle); } private int getMiddle(int floatMaxValue, int minPrgress) { int v = floatMaxValue - minPrgress; return v; } public MinMaxSeekBar(Context context, AttributeSet attrs) { super(context, attrs); this.setOnSeekBarChangeListener(this); } public MinMaxSeekBar(Context context) { super(context); this.setOnSeekBarChangeListener(this); } @Override public void onProgressChanged(SeekBar seekBar, int i, boolean b) { intPrgress = minPrgress + i; onMinMaxSeekBarChangeListener.onMinMaxSeekProgressChanged(seekBar, intPrgress, b); } @Override public void onStartTrackingTouch(SeekBar seekBar) { onMinMaxSeekBarChangeListener.onStartTrackingTouch(seekBar); } @Override public void onStopTrackingTouch(SeekBar seekBar) { onMinMaxSeekBarChangeListener.onStopTrackingTouch(seekBar); } public static interface OnMinMaxSeekBarChangeListener { public void onMinMaxSeekProgressChanged(SeekBar seekBar, int i, boolean b); public void onStartTrackingTouch(SeekBar seekBar); public void onStopTrackingTouch(SeekBar seekBar); } public void setOnIntegerSeekBarChangeListener(OnMinMaxSeekBarChangeListener floatListener) { this.onMinMaxSeekBarChangeListener = floatListener; } } 

    Esta clase contin método public void setMin(int minPrgress) para establecer el valor mínimo de Seek Bar Esta clase contin método public void setMax(int maxPrgress) para establecer el valor máximo de Seek Bar

    Ver mi respuesta aquí

    Utilicé solamente el oyente para SeekBar y trabaja muy bien.

    El valor mínimo siempre comenzará en cero y no se puede hacer nada al respecto. Pero puede cambiar su valor cuando el usuario comience a desplazarlo alrededor.

    Aquí establezco el valor máximo como 64. Estos cálculos son simples: Quiero que el usuario elija un tiempo de 15min a 16 horas, y elige uno de cada 15min a 16 horas, claro? Lo se muy simple

      SeekBar seekBar = (SeekBar) dialog.findViewById(R.id.seekBar); seekBar.setMax(64); seekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() { float b; @Override public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { float des = (float) progress / 4; b = des; hours.setText(des + " hours"); } @Override public void onStartTrackingTouch(SeekBar seekBar) { } @Override public void onStopTrackingTouch(SeekBar seekBar) { hoursSelected = b; } }); 

    No hay opción para establecer un valor mínimo o máximo en el buscador, por lo que puede utilizar una fórmula aquí para escalar su valor.

     Desired_value = ( progress * ( Max_value - Min_value) / 100 ) + Min_value 

    He probado esta fórmula en muchos ejemplos. En su ejemplo, si la barra de progreso es la mitad (es decir, progreso = 50) y su Min_val y Max_val son 60 y 180 respectivamente, entonces esta fórmula le dará el Desired_value '120'.

    FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.