Horizontal ProgressBar: Cambiar entre determinado e indeterminado
Estoy tratando de alternar un SeekBar
entre los dos modos para mostrar el estado de los medios de streaming.
He establecido que los gráficos correctos muestran al definir el android:indeterminate
etiqueta android:indeterminate
en XML:
- Barra de búsqueda personalizada tiene una brecha entre el pulgar y el progreso
- No se puede encontrar la aplicación en Play Store por nombre
- Cómo diseñar un SearchView en la barra de acciones de Android
- Cambiar progreso / La escala de búsqueda no es lineal (por ejemplo, logarítmica)
- ¿Cómo puedo filtrar el listview con baseadapter?
<SeekBar android:id="@+id/seekBar1" android:indeterminate="false" android:progressDrawable="@android:drawable/progress_horizontal" android:indeterminateDrawable="@android:drawable/progress_indeterminate_horizontal" android:indeterminateBehavior="cycle" android:indeterminateOnly="false" android:progress="33" android:secondaryProgress="66" android:layout_height="wrap_content" android:layout_width="match_parent"></SeekBar>
El problema es que, al intentar cambiar llamando setIndeterminate(true)
, los drawables no parecen cambiar correctamente. En el caso de indeterminado-> determinado, la animación se detiene, y de determinado-> indeterminado, no pasa nada.
¿Qué estoy haciendo mal?
- Agregue un filtro de búsqueda en RecyclerView con tarjetas?
- Evite que la actividad se recargue al hacer clic en SearchView
- Android-Desarrollo: API para encontrar Rss-Feeds
- Android: devuelve la consulta de búsqueda a la actividad actual
- Android: reenvía las consultas de búsqueda a una sola actividad que maneja la búsqueda
- ¿Cómo agregar la opción de búsqueda en la aplicación Android?
- Android SearchView.onQueryTextSubmit (consulta de cadena)
- El widget de búsqueda no está funcionando en el release apk
El SeekBar onSizeChanged () inicializa sólo el fondo seleccionado seleccionado, y se llama una vez cuando se inicializa el SeekBar. Así que una solución podría ser:
public class CorrectedSeekBar extends SeekBar { public CorrectedSeekBar(Context context) { super(context); } public CorrectedSeekBar(Context context, AttributeSet attrs) { super(context, attrs); } public CorrectedSeekBar(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); } protected void onSizeChanged(int w, int h, int oldw, int oldh) { boolean current = isIndeterminate(); setIndeterminate(!current); super.onSizeChanged(w, h, oldw, oldh); setIndeterminate(current); super.onSizeChanged(w, h, oldw, oldh); } }
Y en el diseño xml use <yourpackage.CorrectedSeekBar ...
Esto no se ve bien, otras soluciones podrían ser posibles, pero creo que este es el principal problema (bug?).
He tenido el mismo problema y lo solucioné llamando a postInvalidate () para forzar la actualización de la vista. Estoy en Android 2.3.4.
// Configure the SeekBar seekBar.setIndeterminate(true); seekBar.postInvalidate();
Bueno, en lugar de establecer el pd a indeterminado sólo cambiar su fondo. Si desea animaciones dibujables, entonces sugiero que mire en el TransitionDrawable aquí: TransitionDrawable . Por lo que el uso de la misma es realmente añadir 2 diferentes drawables y animar su transición. Creo que debería funcionar para su caso. Pero no tengo experiencia haciendo algo como esto en un diálogo de progreso por lo que realmente no puedo decir.
La solución es realmente muy simple, el mismo truco que tienes que usar para iniciar un dibujo animado. Este problema sólo parece afectar a Android 2.3 (quizás también versiones anteriores de Android).
Cuando quiera establecer:
progressBar.setIndeterminate(true);
Utilice esta parte del código en su lugar:
this.progressBar.post(new Runnable() { @Override public void run() { progressBar.setIndeterminate(true); } });
- Agregue un onClickListener en Default GroupIndicator en ExpandableListView
- Cambiar el icono y el color del título cuando se selecciona en la biblioteca de diseño de Android TabLayout