web-dev-qa-db-fra.com

Devrions-nous remplacer Action Bar par ToolBar?

J'utilise ToolBar depuis son ajout à bibliothèque Support v7. Et je pense que je l'ai bien utilisé. Mais il y a un point que je ne peux pas comprendre. Pourquoi Google créerait-il un tel widget? Je veux dire que nous pouvons faire tout ce que ToolBar peut faire en utilisant ActionBar. Pourquoi devons-nous utiliser ToolBar? Quels sont les avantages de ToolBar par rapport à ActionBar le cas échéant? Est-il nécessaire de remplacer ActionBar par ToolBar?

Tous les conseils sont appréciés. Et merci d'avance.

PS: J'ai trouvé ToolBar est un décantant de ViewGroup. Alors, comment pourrions-nous utiliser ToolBar comme un Layout? Quelqu'un pourrait-il poster des codes de cela?

56
SilentKnight

Un standard toolbar est destiné à être utilisé dans le contenu de l'application.

Un Toolbar est une généralisation de action bar À utiliser dans les présentations d'application. Alors qu'un action bar Fait traditionnellement partie d'un opaque window decor De Activity contrôlé par le framework, un Toolbar peut être placé à n'importe quel niveau d'imbrication dans une hiérarchie de vues. Une application peut choisir de désigner Toolbar en tant que action bar Pour un Activity à l'aide de la méthode setActionBar().

Toolbar prend en charge un ensemble de fonctionnalités plus ciblé que ActionBar. Du début à la fin, un toolbar peut contenir une combinaison des éléments facultatifs suivants:

  • n bouton de navigation. Il peut s'agir d'un menu de navigation Up arrow, Basculer, fermer, réduire, terminé ou d'un autre glyphe choisi par l'application. Ce bouton doit toujours être utilisé pour accéder à d’autres destinations de navigation dans le conteneur du Toolbar et de son contenu signifié, ou pour laisser le contexte actuel signalé par le Toolbar. Le bouton de navigation est aligné verticalement dans la hauteur minimale de Toolbar, si elle est définie.
  • ne image de logo de marque. Cela peut atteindre la hauteur de la barre et peut être arbitrairement large.
  • n titre et un sous-titre. Le titre devrait être un indicateur pour la position actuelle de Toolbar dans la hiérarchie de navigation et pour le contenu qui y est contenu. Le subtitle, si présent, devrait indiquer toute information étendue sur le contenu actuel. Si une application utilise un logoimage, elle devrait fortement envisager d'omettre un title et subtitle.
  • ne ou plusieurs vues personnalisées. L'application peut ajouter des vues enfant arbitraires à Toolbar. Ils apparaîtront à cette position dans la mise en page. Si Toolbar.LayoutParams d'une vue enfant indique une valeur Gravity de CENTER_HORIZONTAL, La vue tentera de se centrer dans l'espace disponible restant dans Toolbar après que tous les autres éléments ont été mesurés.
  • n menu d'action. Le menu des actions sera ajouté à la fin du Toolbar offrant quelques actions fréquentes, importantes ou typiques, ainsi qu'un overflow menu Optionnel pour des actions supplémentaires. Les boutons Action sont alignés verticalement dans la hauteur minimale de Toolbar, si elle est définie.

Dans les Android interfaces utilisateur modernes, les développeurs devraient s’appuyer davantage sur un jeu de couleurs visuellement distinct pour les barres d’outils que sur l’icône de leur application. L'utilisation de l'icône de l'application avec le titre en tant que présentation standard est déconseillée sur les périphériques API 21 et ultérieurs.

8
SilentKnight

Oui, vous devez remplacer ActionBar par une nouvelle barre d’outils.

Les raisons

  1. Il a l'air moderne et suit le nouveau design des matériaux.

  2. Contrairement à la barre d'action, la barre d'outils ne fait pas partie du décor de la fenêtre. Vous le définissez et le placez comme n'importe quel autre widget ... vous avez donc la liberté de le placer n'importe où dans la présentation parente.

  3. Vous êtes libre de placer n'importe quel widget dans la barre d'outils.

  4. Vous pouvez définir plusieurs barres d'outils.

MODIFIER

Ce que je voulais dire, c'est que vous pouvez placer d'autres widgets (vues) dans la barre d'outils.

Créez un fichier de présentation séparé pour la barre d’outils (idéal pour la réutilisation). Dans mon cas, le nom du fichier est main_toolbar.xml

<?xml version="1.0" encoding="utf-8"?>
<Android.support.v7.widget.Toolbar
    xmlns:Android="http://schemas.Android.com/apk/res/Android"
    xmlns:tools="http://schemas.Android.com/tools"
    xmlns:App="http://schemas.Android.com/apk/res-auto"
    xmlns:segmentedgroup="http://schemas.Android.com/apk/res-auto"
    Android:id="@+id/toolbar"
    Android:layout_width="match_parent"
    App:theme="@style/ToolbarColoredBackArrow"
    Android:layout_height="56dp"
    Android:background="@color/primary_color" >

    <TextView
        Android:layout_width="wrap_content"
        Android:layout_height="wrap_content"
        Android:textSize="@dimen/drawer_fntsize"
        Android:text="Title"
        Android:id="@+id/lbl_title"
        Android:textColor="@color/title_text_color"
        Android:layout_gravity="center" />

 </Android.support.v7.widget.Toolbar>

Ensuite, incluez cette barre d'outils dans votre mise en page principale comme ceci

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
    Android:layout_width="match_parent"
    Android:layout_height="match_parent">

    <include
        Android:id="@+id/toolbar"
        layout="@layout/main_toolbar" />

    <FrameLayout
        Android:id="@+id/content_frame"
        Android:layout_width="match_parent"
        Android:layout_height="match_parent"
        Android:layout_below="@+id/toolbar" />

</RelativeLayout>

Comme vous pouvez le voir dans cet exemple, j'ai placé TextView dans la barre d'outils.

33
Shane Ekanayake

pourquoi Android créerait un tel widget?

Imaginez, si vous voulez, une tablette Android.

Cette tablette exécute une application. Cette application a, dans le coin inférieur droit de l'écran, un éditeur de texte enrichi, dans lequel on peut entrer des commentaires et les formater avec gras , italique, etc.

Dans un bureau ou une application Web, outre les raccourcis clavier, une approche typique de ces options de formatage consiste à utiliser une barre d’outils, semblable à celle que vous voyez au-dessus de la zone de texte de réponse ici, dans Stack Overflow.

Avant Toolbar, Android, les développeurs devaient soit faire défiler leur propre barre d’outils, soit placer les actions de formatage dans la barre d’action. Cette dernière approche est simple, mais elle impose également des contraintes. l’utilisateur de l’application fictive susmentionnée, car elle doit continuer à passer de l’éditeur (en bas de l’écran) à la barre d’action (en haut de l’écran).

Pourquoi devons-nous utiliser la barre d'outils?

Vous n'êtes pas obligé d'utiliser Toolbar. J'ai ~ 300 exemples d'applications dans le cadre de mon livre , et pour le moment, zéro d'entre eux utilise exactement Toolbar. Je devrai corriger cela à un moment donné, car je n’ai pas encore écrit de chapitre sur Toolbar.

Est-il nécessaire de remplacer ActionBar par ToolBar?

Non, il existe un moyen de le faire, mais ce n'est pas nécessaire.

22
CommonsWare

La barre d’outils est beaucoup plus souple que la barre d’action standard, vous pouvez ajouter beaucoup plus d’outils dans une barre d’outils (au fur et à mesure qu’il élargit ViewGroup) et suivre les instructions de conception de matériel.

Par exemple, avec une barre d’outils, vous pouvez effectuer les opérations suivantes:

My Files with big toolbar

Un ActionBar standard n'est pas conçu pour être développé de cette façon.

En outre, vous pouvez mieux manipuler le contenu de la barre d’outils en l’intégrant dans votre fichier XML de mise en forme Activité. Personnellement, j'utilise un LinearLayout ou un RelativeLayout avec en haut, la barre d'outils, et en dessous, remplissant l'espace restant, un FrameLayout où seront ajoutés mes Fragments.

Enfin, vous pouvez placer votre barre d’outils n’importe où vous le souhaitez lorsque vous le définissez dans votre fichier de présentation.

UPDATE:

Google a publié Android Design Support Library . La méthode recommandée pour obtenir une barre d’application étendue consiste à envelopper Toolbar avec AppBarLayout et à ajouter une vue supplémentaire telle que TabLayout in. Pour obtenir un FAB sur la barre d’outils comme sur cette capture , vous pouvez utiliser CoordinatorLayout pour envelopper le contenu de votre mise en page, puis utiliser les attributs d'ancrage sur le FAB.

17
Louis CAD
  1. Vous pouvez facilement personnaliser la barre d’outils.
  2. Vous pouvez ajouter de nombreux widgets dans la barre d’outils.
  3. Vous pouvez ajouter de nombreuses barres d’outils dans votre vue.
  4. Vous êtes libre de le placer n'importe où dans la mise en page parent.
  5. Ils ont leur propre manipulation/gestion de cette vue enfant.
5
Haris Qureshi

Pourquoi devons-nous utiliser ToolBar?

La barre d'outils est utilisée pour la compatibilité des pré-périphériques et des ports arrière que l'ancienne bibliothèque de support ne fournissait pas. N'oubliez pas que ActionbarSherlock, Android a été créé pour prendre en charge l'actionbar sur les périphériques API de bas niveau.

Quels sont les avantages de ToolBar par rapport à ActionBar le cas échéant?

Vous pouvez facilement ajouter une vue personnalisée dans la barre d'outils XML, comme une vue de présentation relative, spécialement un titre personnalisé et des icônes avec des animations. Vous avez plus de contrôle sur votre barre d’outils que sur l’ancienne barre d’action conventionnelle.

Est-il nécessaire de remplacer ActionBar par ToolBar?

Si vous envisagez de prendre en charge la barre d’action sur les périphériques inférieurs à 2.0, vous avez besoin d’une compatibilité de port arrière pour la barre d’action.

5
Rod_Algonquin

Une barre d'outils est une généralisation des barres d'action à utiliser dans les présentations d'application. Tandis qu’une barre d’action fait traditionnellement partie du décor de fenêtre opaque d’une activité contrôlée par le cadre, une barre d’outils peut être placée à n’importe quel niveau d’imbrication dans une hiérarchie de vues . Une application peut choisir de désigner une barre d'outils en tant que barre d'actions d'une activité à l'aide de la méthode setActionBar (). Vous pouvez trouver plus d'informations ici . Nous avons remplacé notre barre d’actions car il était plus facile de personnaliser la barre d’outils pour la conception des matériaux. Palettes de couleurs et comportement d'animation en train de disparaître, par exemple. Personnellement, je ne comprends pas pourquoi Android jette les anciens contrôles et en crée un nouveau. Un autre exemple serait RecyclerView. Je ne comprends pas pourquoi ils n'ont tout simplement pas amélioré l'ancienne API.

4
Access Denied

Remarque : les deux prennent en charge la navigation générale dans les applications, les icônes et offrent une prise en charge en amont.

La réponse dépend de l'interaction utilisateur (barre d'outils animante) qu'exigent vos conceptions. Cela étant dit, vous devez implémenter des animations sur la barre d’outils pour en faire un matériau.


Barre d'action:

Si vous voulez simplement une barre statique en haut qui peut héberger des icônes, cliquez sur le bouton Précédent et vous pouvez thème.

Barre d'outils:

Si vous voulez faire autre chose qu'une barre statique telle que des animations.

Une recommandation commune en matière de mise en œuvre et de conception de Google consiste à masquer la barre d’outils lors du défilement. Liste de contrôle de Material Design: masquer la barre d’applications lors du défilement?

4
toidiu

Oui

Le support Toolbar vous donne tellement plus de flexibilité et de liberté, sans pratiquement aucun coût supplémentaire, qu’il n’ya aucune raison à laquelle je peux penser de ne pas faire la transition. La transition vers la nouvelle Toolbar est en fait l'une des premières étapes du portage d'applications existantes vers une conception plus matérielle, en raison de la simplicité de la tâche et de ses effets immédiats sur l'apparence générale de l'application. .

1
memoizr

Voici le lien vers la documentation - http://developer.Android.com/training/appbar/setting-up.html

Notez qu'il n'inclut pas le code dans lequel vous l'incluez dans vos autres fichiers de présentation:

<include
    Android:id="@+id/toolbar"
    layout="@layout/tool_bar"/>

Pourquoi j'ai changé pour la barre d'outils - L'une des raisons pour lesquelles j'ai modifié une application récente en barre d'outils est que lorsque nous voulions personnaliser la barre d'action, cela ne fonctionnait pas avec différentes versions Android ou lorsque nous étendu certaines classes (en le rendant transparent ou en affichant une icône au lieu du nom de l'application) Les barres d'outils nous ont permis les options de personnalisation que nous voulons.

0
Cash LeBrun