Valor mínimo de SeekBar de Android

¿Alguien sabe cómo definir un valor mínimo de SeekBar? ¿Esto se hace en la disposición de XML o necesito definirla programatically?

Básicamente, necesito cambiar mi valor mínimo de 0 a 0.2

Hola, ¿alguien sabe cómo definir un valor mínimo de SeekBar?

No se puede definir el valor mínimo. Es 0 .

Básicamente, necesito cambiar mi valor mínimo de 0 a 0.2

Cuando obtenga el valor, agregue 0.2 a él.

Esto es lo que uso para obtener android:max para un rango máximo / mínimo para un SeekBar .

 mSeekbar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() { int progressChanged = minimumValue; public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { progressChanged = minimumValue+ progress; } }); 

Así que obtendrá el rango minimum to minimum+max ;

Para establecer el valor máximo en xml, use max=(desiredMax-min) ;

 @Override public void onProgressChanged(SeekBar arg0, int boolean arg2) { int siz=size+10; txtViewFontSize .setTextSize(siz); Toast.makeText(this, "" + siz, Toast.LENGTH_SHORT).show(); } 

El valor mínimo debe ser 0 para el objeto SeekBar en Java (es decir, no se puede cambiar), pero esto es cómo obtener la apariencia y el rendimiento requeridos.

Supongamos que quiere que su min sea de 5 y su máximo de 100 …

Por lo tanto, tiene un rango de 95, por lo que debería configurar el SeekBar con un valor máximo de 95 .

Si su barra de búsqueda tiene etiquetas de interfaz de usuario, se hacen 5 (min) y 100 (máximo).

Por lo tanto, el XML de diseño sería algo así como …

 <LinearLayout android:id="@+id/sampleSizeLayout" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_below="@+id/batchDurationSecsLayout" android:orientation="vertical" android:visibility="visible" > <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/sample_size" /> <SeekBar android:id="@+id/sampleSizeSeekBar" android:layout_width="fill_parent" android:layout_height="wrap_content" android:max="95" /> <RelativeLayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="horizontal" android:visibility="visible" > <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_alignParentTop="true" android:gravity="left" android:text="5" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentRight="true" android:layout_alignParentTop="true" android:gravity="right" android:text="100" /> </RelativeLayout> </LinearLayout> 

Así que ahora puede introducir la corrección 5 , así …

 final SeekBar sampleSizeSeekBar = (SeekBar)findViewById(R.id.sampleSizeSeekBar); final int sampleSizeSeekBarCorrection = 5; //eg, 95 <--> 100 int realValueFromPersistentStorage = appObj.getSampleSize(); //Get initial value from persistent storage, eg, 100 sampleSizeSeekBar.setProgress(realValueFromPersistentStorage - sampleSizeSeekBarCorrection); //Eg, to convert real value of 100 to SeekBar value of 95. sampleSizeSeekBar.setOnSeekBarChangeListener(new OnSeekBarChangeListener() { int val = sampleSizeSeekBar.getProgress(); public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { val = progress + sampleSizeSeekBarCorrection; //eg, to convert SeekBar value of 95 to real value of 100 } public void onStartTrackingTouch(SeekBar seekBar) { } public void onStopTrackingTouch(SeekBar seekBar) { try { appObj.saveSampleSize(val); //Save real value to persistent storage, eg, 100 appObj.makeToast("Sample size set to " + val); } catch(Exception e) { Log.e(LOG_TAG, "Error saving sample size", e); appObj.makeToast("Error saving sample size: " + e); } } }); 

Esta solución le dará a su barra de búsqueda el mínimo, el máximo y la escala correctos en la interfaz de usuario, y la posición del control no "saltará" a la derecha si el usuario lo desliza todo hacia la izquierda.

He creado esta biblioteca simple, no es mucho, pero puede ahorrarle un tiempo.

https://github.com/joaocsousa/DoubleSeekBar

Mi solución que funciona bien para mí es:

  @Override public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { if (progress <= SOME_LIMIT) { seekBar.setProgress(SOME_LIMIT); } else { // DO SOMETHING } } 

No se puede establecer el progreso en float porque seekbar.getProgress () siempre devuelve un valor entero. El siguiente código establecerá el valor de textview en 0.2 si el valor de la barra de búsqueda es 0. Puede cambiar el valor mínimo de acuerdo con su requerimiento.

 int minimumVal = 0; seekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() { @Override public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { if (progress >= minimumVal) { seekBar.setProgress(progress); textView.setText(progress); } else { seekBar.setProgress(minimumVal); textView.setText("0.2"); } } @Override public void onStartTrackingTouch(SeekBar seekBar) { } @Override public void onStopTrackingTouch(SeekBar seekBar) { } }); 

Puedes intentar hacerlo de esta manera:

Int yourMinProgress = 10;

 private SeekBar.OnSeekBarChangeListener onSeekBarChangeListener = new SeekBar.OnSeekBarChangeListener() { @Override public void onProgressChanged(SeekBar seekBar, int progress, boolean b) { if (progress < yourMinProgress) { seekBar.setProgress(10); } } @Override public void onStartTrackingTouch(SeekBar seekBar) { } @Override public void onStopTrackingTouch(SeekBar seekBar) { } }; 

Este código funciona para mí bien!

 SeekBar seekBar = (SeekBar)findViewById(R.id.seekBar); seekBar.setMax(100); seekBar.setProgress(40); seekBar.setOnSeekBarChangeListener(seekBarChangeListener); SeekBar.OnSeekBarChangeListener seekBarChangeListener = new SeekBar.OnSeekBarChangeListener() { @Override public void onProgressChanged(SeekBar seekBar, int progress, boolean b) { if(progress <= 40){ seekBar.setProgress(40); } if(progress >= 40) { pgr_status.setText(String.valueOf(progress)); } } @Override public void onStartTrackingTouch(SeekBar seekBar) { } @Override public void onStopTrackingTouch(SeekBar seekBar) { } }; 
FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.