Android deshabilitado seekBar sin atenuación

Necesito prevenir el buscador de entradas de usuario en casos especiales. Si utilizo setEnabled (false) para convertirse en gris en lugar de blanco.

¿Hay algún método para desactivar la barra de búsqueda sin atenuación o establecer otro dibujable para el progreso en la barra de búsqueda con discapacidad?

No estoy seguro de por qué desea cambiar esto, y no creo que sea una buena práctica anular la cola visual para un usuario que algo está deshabilitado. Si se ve activo, pero no interactúa, voy a estar enojado con tu aplicación.

Independientemente, para responder a su pregunta, debe buscar en StateListDrawable esta pregunta lo describe específicamente para las barras de búsqueda.

Sí. ¡Es posible! Pero necesitas anular la función drawableStateChanged de SeekBar, con algo como esto:

@Override protected void drawableStateChanged() { super.drawableStateChanged(); final Drawable progressDrawable = getProgressDrawable(); if(isEnabled() == false && progressDrawable != null) progressDrawable.setAlpha(255); } 

En realidad, estaba muy enojado, cuando vi el valor de alpha codificado en AbsSeekBar:

 mDisabledAlpha = a.getFloat(com.android.internal.R.styleable.Theme_disabledAlpha, 0.5f); 

Porque no hay función, que se apagará, o incluso cambiar el valor de Alpha deshabilitado para SeekBar. Basta con echar un vistazo a esas líneas de código en la función drawableStateChanged:

 if (progressDrawable != null) { progressDrawable.setAlpha(isEnabled() ? NO_ALPHA : (int) (NO_ALPHA * mDisabledAlpha)); } 

Mejor solución aquí ….

 seekBar.setOnTouchListener(new OnTouchListener(){ @Override public boolean onTouch(View v, MotionEvent event) { return true; } }); 

Android cambia el valor alfa del color a 127 desde 255 en estado deshabilitado. Sólo asegúrate de volver a ponerla en 255 después de inhabilitar la barra de búsqueda.

 seekBar.post(new Runnable(){ @Override public void run() { seekBar.getProgressDrawable().setAlpha(255); } }); 

View.post sólo es necesario si no está seguro de que el buscador se procesa todavía o no, de lo contrario sólo

 seekBar.getProgressDrawable().setAlpha(255); 

es suficiente.

  • Creación de una ventana de posición de SeekBar en Android
  • Cómo establecer el valor mínimo y máximo de búsqueda
  • Actualización en vivo Brillo de la pantalla con SeekBar
  • Android SeekBar no se actualiza después de establecer dinámicamente el valor máximo con setMax
  • Android SeekBar setOnSeekBarChangeListener
  • Obtener progreso en onStopTrackingTouch no onProgressChanged en seekbar
  • Cambiar tamaño de Android-Seekbar?
  • Android - Cómo marcar marcas de tiempo en un SeekBar
  • Seekbar en android no se mueve automáticamente
  • Barra de búsqueda personalizada (tamaño del pulgar, color y fondo)
  • Android ProgressBar.setProgressDrawable sólo funciona una vez?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.