Avec la nouvelle API Lollipop, nous devons utiliser une barre d'outils si nous voulons personnaliser l'aspect de la barre d'action.
Ajouter une barre de progression à la barre d'outils est aussi simple que de l'ajouter à la barre d'outils ViewGroup, comme l'a dit Chris Banes .
<Android.support.v7.widget.Toolbar xmlns:Android="http://schemas.Android.com/apk/res/Android"
xmlns:app="http://schemas.Android.com/apk/res-auto"
Android:id="@+id/toolbar"
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
Android:background="@color/material_green_500"
Android:minHeight="?attr/actionBarSize"
app:popupTheme="@style/ThemeOverlay.AppCompat.Light"
app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar">
<!-- Color is Brown 500 -->
<ProgressBar
Android:id="@+id/toolbar_progress_bar"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:indeterminateTint="#795548"
Android:indeterminateTintMode="src_in"/>
</Android.support.v7.widget.Toolbar>
Mais comment pouvons-nous le placer à droite de la barre d'outils, où il appartient?
L'attribut layout_gravity
Ne semble pas être défini pour la barre d'outils. Le définir à partir du xml n'a aucun effet. J'ai essayé de changer la largeur de la ProgressBar, sans succès.
Que fais-je?
[~ # ~] modifier [~ # ~] : Il existe une solution de programmation à ce problème, voir la réponse @mdelolmo pour cela.
Vous pouvez essayer ça. Ça a marché pour moi. La clé ici est de définir layout_gravity
dans le xml: Android:layout_gravity="right"
<Android.support.v7.widget.Toolbar
xmlns:Android="http://schemas.Android.com/apk/res/Android"
xmlns:app="http://schemas.Android.com/apk/res-auto"
Android:id="@+id/toolbar"
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
Android:background="@color/material_green_500"
Android:minHeight="?attr/actionBarSize"
app:popupTheme="@style/ThemeOverlay.AppCompat.Light"
app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar">
<!-- Color is Brown 500 -->
<ProgressBar
Android:id="@+id/toolbar_progress_bar"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:indeterminateTint="#795548"
Android:indeterminateTintMode="src_in"
Android:layout_gravity="right"
/>
</Android.support.v7.widget.Toolbar>
J'ai également frappé le même mur, mais par programme, cela fonctionne:
Toolbar.LayoutParams layoutParams = new Toolbar.LayoutParams(
ViewGroup.LayoutParams.WRAP_CONTENT,
ViewGroup.LayoutParams.WRAP_CONTENT,
Gravity.TOP | Gravity.RIGHT);
Dans mon extrait, je l'aligne en haut, pour correspondre à l'alignement du menu.