52 votes

Mettre une barre de progression sur la barre d'action

J'essaie de placer une barre de progression indéterminée sur la barre d'action. J'utilisais une actionView pour placer la barre de progression comme l'application Google+ par exemple.

<item
    android:id="@+id/menu_progress"
    android:actionLayout="@layout/action_progress"
    android:menuCategory="container"
    android:showAsAction="always">
</item>

Le problème est que la barre de progression est considérée comme un élément et que, par conséquent, sur un Nexus S en mode portrait, je n'ai qu'un seul autre élément sur la barre d'action alors que sur Google+, je peux voir deux éléments plus la barre de progression. Comment est-il possible de mettre une barre de progression en utilisant la barre d'action d'Android ?

166voto

Kuffs Points 12318

NOTE : La fonctionnalité ci-dessous est désormais obsolète dans la bibliothèque de support.

Vous devez appeler

requestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS)

dans votre onCreate() avant de définir la mise en page de l'activité :

par exemple

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    requestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS);
    ... // set layout etc

Si vous utilisez le bibliothèque de soutien remplacer requestWindowFeature avec supportRequestWindowFeature

Et ensuite, appelez

setProgressBarIndeterminateVisibility(true);

sur votre activité chaque fois que vous souhaitez afficher le compteur de progression.

0voto

HostMyBus Points 21

Dans ma situation, il fallait mettre à jour la barre de progression d'un fragment en utilisant la bibliothèque de support Android version 4.

Dans mon "MainActivity extends ActionBarActivity" comme suggéré par Jokeefe :

supportRequestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS);

avant

setContentView(R.layout.activity_main);

Dans la longue tâche de mon fragment :

onPreExecute

actionBarActivity.setSupportProgressBarIndeterminateVisibility(true);

onPostExecute

actionBarActivity.setSupportProgressBarIndeterminateVisibility(false);
menu.clear();
actionBarActivity = (ActionBarActivity)getActivity();
actionBarActivity.supportInvalidateOptionsMenu();

Je ne suis pas sûr que cela réponde à la question de l'OP, mais c'est ce qui a fonctionné pour moi sur la base des messages ci-dessus. J'espère que cela vous aidera.

-1voto

parambir singh Points 153

J'ai trouvé le plus facile pour montrer le progrès exactement comme vous le souhaitez. Je l'ai trouvé ici . Il suffit d'utiliser une classe et de placer votre barre de progression où vous voulez.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X