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


¿Cómo mostrar la barra de progreso Indeterminada cuando se pulsa el botón Actualizar en ActionBarSherlock?

¿Cómo mostrar Indeterminate ProgressBar cuando se pulsa el botón Refresh en ActionBarSherlock y volver a mostrar el botón Actualizar cuando ViewGroup se actualiza?

Actualización 1: Tengo una respuesta aquí que es incompleta. Estoy poniendo una recompensa en cuestión para que más desarrolladores pueden ayudar a construir una buena respuesta que puede ser útil para otros en el futuro.

¿Cómo podemos mostrar una Indeterminate ProgressBar que se parece a la que se muestra en la imagen de abajo Introduzca aquí la descripción de la imagen

  • : CheckDebugManifest FAILED => el archivo especificado para la propiedad 'manifest' no existe
  • Android studio java.exe terminado con valor de salida no nulo 3
  • Error de ejecución de la tarea ': app: packageDebug' - No se pudo leer el archivo zip
  • La conexión de datos falla con NoSuchMethodError
  • Resplandor cuando toque la pantalla en android?
  • Android y RoboGuice - Inyectar vistas en Fragmento?
  • ¿Cómo puedo enviar mensajes SMS en el BACKGROUND usando Android?
  • USTL o STLPort para Android?
  • 3 Solutions collect form web for “¿Cómo mostrar la barra de progreso Indeterminada cuando se pulsa el botón Actualizar en ActionBarSherlock?”

    Parece que ActionBarSherlock no proporciona un método específico para animar una actualización MenuItem.

    Lo que puedes hacer (usando la API clásica de Android) es usar el setActionView(int resId) y dar el id de un diseño con un ProgressBar en él.

    Al comienzo de la acción de actualización, solo tienes que llamar a:

     item.setActionView(R.layout.refresh_menuitem); 

    Y cuando termine la acción de actualización, llame a:

     item.setActionView(null); 

    A continuación, se muestra una muestra de lo que puede tener el archivo de diseño refresh_menuitem.xml :

     <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="wrap_content" android:layout_height="wrap_content" android:addStatesFromChildren="true" android:focusable="true" android:paddingLeft="4dp" android:paddingRight="4dp" android:gravity="center" style="?attr/actionButtonStyle"> <ProgressBar android:layout_width="wrap_content" android:layout_height="wrap_content" android:focusable="true" style="@android:style/Widget.ProgressBar.Small"/> </LinearLayout> 

    Aquí está cómo usted agrega este tipo de ProgressBar indeterminado con un objeto de ActionBarSherlock : (en realidad es más fácil el otro pero el progressBar se demuestra solamente y no sobre un MenuItem )

    1 – Coloque esta línea en el método onCreate () antes de la llamada a setContentView ():

     requestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS); 

    -> Esta línea especifica que utilizará la función ProgressBar indeterminada.

    2 – Habilite el ProgressBar indeterminado llamando a:

     setSupportProgressBarIndeterminateVisibility(true); 

    3 – Deshabilite el ProgressBar indeterminado llamando a:

     setSupportProgressBarIndeterminateVisibility(false); 

    Observación: Eche un vistazo en la carpeta de ejemplo de la carpeta ActionBarSherlock. Encontré este código en el siguiente archivo: JakeWharton-ActionBarSherlock-9598f2b \ samples \ demostraciones \ src \ com \ actionbarsherlock \ sample \ demos \ IndeterminateProgress.java

    Aquí está un código completo:

     private static final int menuItemIdRefresh = 10; //class constant private boolean refresh; @Override public boolean onCreateOptionsMenu(Menu menu) { MenuItem refreshItem = menu.add(0, menuItemIdRefresh, 0, getString(R.string.action_refresh)).setShowAsActionFlags( MenuItem.SHOW_AS_ACTION_ALWAYS); if (isRefreshing) { refreshItem.setActionView(R.layout.indeterminate_progress); } else { refreshItem.setActionView(null); refreshItem.setIcon(R.drawable.ic_refresh); } return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case menuItemIdRefresh: { //the user has pressed the refresh button if (!isRefreshing) { isRefreshing = true; new RefreshMyViewAsyncTask().execute(""); } } break; default: break; } return false; } 

    Una última nota, con el fin de obtener el código anterior de trabajo que usted necesita también llamar a supportInvalidateOptionsMenu (). Puede agregarlo al método onPreExecute () de RefreshMyViewAsyncTask.

    Espero que esto ayude a alguien.

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