Se si stava utilizzando AppCompatActivity
e sono andati giù per il sentiero di non utilizzare, perché si voleva non ottenere l'automatico ActionBar
che fornisce, perché si vuole separare la Toolbar
, a causa delle vostre esigenze di Material Design e CoordinatorLayout
o AppBarLayout
, allora, considerare questo:
Puoi ancora usare il AppCompatActivity
, non è necessario smettere di usarlo solo per poter usare un <android.support.v7.widget.Toolbar>
nel tuo XML. Disattiva semplicemente lo stile della barra delle azioni come segue:
Innanzitutto, deriva uno stile da uno dei temi NoActionBar che ti piace nel tuo styles.xml
, che ho usato in questo Theme.AppCompat.Light.NoActionBar
modo:
<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>
Nel manifest della tua app, scegli il tema di stile figlio che hai appena definito, in questo modo:
<activity
android:name=".activity.YourSuperCoolActivity"
android:label="@string/super_cool"
android:theme="@style/SuperCoolAppBarActivity">
</activity>
Nel tuo Activity Xml, se la barra degli strumenti è definita in questo modo:
...
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
/>
...
Quindi, e questa è la parte importante, imposti la barra delle azioni di supporto su AppCompatActivity che stai estendendo, in modo che la barra degli strumenti nel tuo XML diventi la barra delle azioni. Ritengo che sia un modo migliore, perché puoi semplicemente fare le molte cose che ActionBar consente, come menu, titolo automatico dell'attività, gestione della selezione degli elementi, ecc. Senza ricorrere all'aggiunta di gestori di clic personalizzati, ecc.
Nell'override onCreate della tua attività, procedi come segue:
@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);
}