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.

  • ActionbarSherlock SearchView en menu.xml da recursos $ NotFoundException
  • Botón de inicio personalizado en ActionBar
  • ¿Cómo puedo eliminar el título y el icono de forma completa en Actionbar sherlock?
  • Cómo agregar ActonBarSherlock en Android Studio
  • ¿Cómo puedo cambiar el estilo de fuente en ActionBarSherlock
  • ActionBarSherlock - Muestra los elementos de acción desbordados como icono + texto
  • ¿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

  • Cómo enviar notificaciones push de Android a través de GCM en C # .Net
  • SQLite y almacenamiento de imágenes
  • ¿Cuál es la función y la utilidad de Contexto: <no context> en AndroidStudio?
  • Problema con la dimensión de sabor de Android Studio 3.0
  • ¿Cómo deshabilitar los mensajes de tostadas generados en Pinning de pantalla?
  • Obtener boolean de la base de datos utilizando Android y SQLite
  • 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.