Si vous étiez utilisez AppCompatActivity
et vous êtes allé sur le chemin de ne pas l' utiliser, parce que vous vouliez pas obtenir le automatique ActionBar
qu'il fournit, parce que vous voulez séparer le Toolbar
, en raison de vos besoins de conception des matériaux et CoordinatorLayout
ou AppBarLayout
, alors, considérez ceci:
Vous pouvez toujours utiliser le AppCompatActivity
, vous n'avez pas besoin d'arrêter de l'utiliser pour pouvoir utiliser un <android.support.v7.widget.Toolbar>
dans votre xml. Désactivez simplement le style de barre d'action comme suit:
Tout d'abord, dérivez un style de l'un des thèmes NoActionBar que vous aimez dans votre styles.xml
, j'ai utilisé Theme.AppCompat.Light.NoActionBar
comme ceci:
<style name="SuperCoolAppBarActivity" parent="Theme.AppCompat.Light.NoActionBar">
<item name="colorPrimary">@color/primary</item>
<!-- colorPrimaryDark is used for the status bar -->
<item name="colorPrimaryDark">@color/primary_dark</item>
...
...
</style>
Dans le manifeste de votre application, choisissez le thème de style enfant que vous venez de définir, comme suit:
<activity
android:name=".activity.YourSuperCoolActivity"
android:label="@string/super_cool"
android:theme="@style/SuperCoolAppBarActivity">
</activity>
Dans votre Activity Xml, si la barre d'outils est définie comme suit:
...
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
/>
...
Ensuite, et c'est la partie importante, vous définissez la barre d'actions de support sur l'AppCompatActivity que vous étendez, de sorte que la barre d'outils de votre XML devienne la barre d'actions. Je pense que c'est une meilleure façon, car vous pouvez simplement faire les nombreuses choses qu'ActionBar permet, comme les menus, le titre d'activité automatique, la gestion de la sélection des éléments, etc. sans recourir à l'ajout de gestionnaires de clics personnalisés, etc.
Dans la substitution onCreate de votre activité, procédez comme suit:
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_super_cool);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
//Your toolbar is now an action bar and you can use it like you always do, for example:
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
}