web-dev-qa-db-fra.com

Comment afficher les éléments d'action en bas à l'aide de la barre d'outils

main.xml

<item
    Android:id="@+id/action_back"
    Android:orderInCategory="100"
    app:showAsAction="always"
    Android:icon="@drawable/ic_action_back"
    Android:title="@string/back"/>

<item
    Android:id="@+id/action_save"
    Android:orderInCategory="100"
    app:showAsAction="always"
    Android:icon="@drawable/ic_action_save"
    Android:title="@string/save"/>

<item
    Android:id="@+id/action_sort"
    Android:orderInCategory="100"
    app:showAsAction="always"
    Android:icon="@drawable/ic_action_sort_dark"
    Android:title="@string/sort"/>

<item
    Android:id="@+id/action_new"
    Android:orderInCategory="100"
    app:showAsAction="always"
    Android:icon="@drawable/ic_new"
    Android:title="@string/new_menu"/>

Manifest.xml

<activity
    Android:name="com.app.FileFragmentActivity"
    Android:uiOptions="splitActionBarWhenNarrow"
    Android:label="@string/app_name" >
</activity>

Production:

enter image description here

Exigence:

enter image description here

Je veux afficher les éléments d'action en bas comme dans les deux captures d'écran ci-dessus (marquées en rouge).
J'utilise Toolbaren utilisant appcompat-v7 bibliothèque.

15
Sagar Maiyad

Comme indiqué dans ce message (cliquez)Android:uiOptions="splitActionBarWhenNarrow" a été supprimé dans Lollipop. Bien que ce ne soit pas si grave, car vous pouvez simplement utiliser deux Toolbars - un en haut et un en bas.

En suivant un exemple de code de base:

Disposition

<RelativeLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
    Android:layout_width="match_parent"
    Android:layout_height="match_parent">

    <Android.support.v7.widget.Toolbar
        Android:id="@+id/toolbar_top"
        Android:layout_height="wrap_content"
        Android:layout_width="match_parent"
        Android:background="?attr/colorPrimary"
        Android:minHeight="?attr/actionBarSize" />

    <Android.support.v7.widget.Toolbar
        Android:id="@+id/toolbar_bottom"
        Android:layout_height="wrap_content"
        Android:layout_width="match_parent"
        Android:background="?attr/colorPrimary"
        Android:layout_alignParentBottom="true"
        Android:minHeight="?attr/actionBarSize" />

    <LinearLayout
        Android:layout_below="@id/toolbar_top"
        Android:layout_above="@id/toolbar_bottom"
        Android:layout_width="match_parent"
        Android:layout_height="wrap_content" />

</RelativeLayout>

Code

private void initToolbars() {
    Toolbar toolbarTop = (Toolbar) findViewById(R.id.toolbar_top);
    setSupportActionBar(toolbarTop);

    Toolbar toolbarBottom = (Toolbar) findViewById(R.id.toolbar_bottom);
    toolbarBottom.setOnMenuItemClickListener(new Toolbar.OnMenuItemClickListener() {
        @Override
        public boolean onMenuItemClick(MenuItem item) {
            switch(item.getItemId()){
                case R.id.action_settings:
                    // TODO
                    break;
                // TODO: Other cases
            }
            return true;
        }
    });
    // Inflate a menu to be displayed in the toolbar
    toolbarBottom.inflateMenu(R.menu.menu_main);
}

Résultat

picture showing result

Remarque: Gérer quand afficher deux barres d'outils ou une seule est quelque chose que vous devez faire manuellement

51
reVerse

Si vous voulez faire quelque chose comme ça (à partir du docs )

enter image description here

ou ceci (à partir de votre question)

enter image description here

puis utilisez une barre de navigation inférieure plutôt qu'une barre d'outils. Il est maintenant inclus dans la bibliothèque de support et n'est pas difficile à configurer. Voir cette réponse pour les instructions détaillées:

0
Suragch