web-dev-qa-db-fra.com

Comment placer une barre de progression à droite de la barre d'outils?

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.

24
doplumi

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>
38
dhiku

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.

14
mdelolmo