31 votes

Afficher la barre de progression (actualiser) sur ActionBar?

J'utilise l'ActionBar. J'aimerais avoir un spinner de progression de rafraîchissement dans la barre de titre, si je le mets en rotation - sinon cachez-le. Est-ce possible?:

 // My menu has a refresh item, but it shouldn't be visible on the
// actionbar unless it's spinning.
<menu xmlns:android="http://schemas.android.com/apk/res/android">
  <item android:id="@+id/menu_refresh"
    android:title="@string/refresh"
    android:icon="@drawable/ic_action_refresh" />
</menu>

...

// When I need to show some work being done on my activity,
// can I somehow now make the spinner associated with the
// refresh item become visible on the action bar?
getActionBarHelper().setRefreshActionItemState(true);
 

Je ne le veux pas sur l'ActionBar à moins qu'il ne soit "en cours" / en rotation.

Merci

76voto

MartinS Points 1314

Toutes mes excuses pour l'absence de balises de code, la publication à partir du téléphone ...

Cela vient d'ActionbarSherlock (Google qui, si vous ne l'avez pas rencontré, autorise le support de la barre d'action en nid d'abeille)

En coursCréation de l'activité principale

 // This has to be called before setContentView and you must use the 
// class in android.support.v4.view and NOT android.view

requestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS);
 

Pour afficher / masquer la progression dans la barre d'action. Notez qu'avec actionbarsherlock vous devez utiliser boolean.TRUE / FALSE, pas seulement vrai / faux .........

 if (getSupportLoaderManager().hasRunningLoaders()) {
   setProgressBarIndeterminateVisibility(Boolean.TRUE); 
} else {
   setProgressBarIndeterminateVisibility(Boolean.FALSE); 
}
 

3voto

Victor Ruiz C. Points 139

Si vous vous étendez à partir d'un ActionBarActivity, essayez ceci:

 public class MainActivity extends ActionBarActivity {

    boolean showUp=true;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        supportRequestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS);
        setContentView(R.layout.activity_main);
        setSupportProgressBarIndeterminateVisibility(Boolean.TRUE);

        Button b = (Button) findViewById(R.id.myButton);
        b.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {

                if(showUp){
                    setSupportProgressBarIndeterminateVisibility(Boolean.FALSE);
                }else {
                    setSupportProgressBarIndeterminateVisibility(Boolean.TRUE);
                }
                showUp=!showUp;
            }
        });
}
 

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