2015-05-11 11 views
5

Ho creato uno Toolbar per Lollipop, ma non riesco a capire come aggiungere un pulsante di overflow alla barra degli strumenti. Non utilizzerò la barra degli strumenti app v7, poiché desidero utilizzare esplicitamente il widget Toolbar. Voglio farlo sembrare qualcosa di simile:Visualizzazione di un pulsante di overflow del menu in una barra degli strumenti

enter image description here

main_activity.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:fab="http://schemas.android.com/apk/res-auto" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical"> 

<Toolbar xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/toolbar" 
    android:layout_width="match_parent" 
    android:layout_height="112dp" 
    android:elevation="4dp" 
    android:layout_alignParentTop="true" 
    android:minHeight="?android:attr/actionBarSize" 
    android:background="?android:attr/colorPrimary" 
    android:gravity="bottom" 
    android:paddingBottom="16dp"/> 
</RelativeLayout> 

Classe principale

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_quotebook); 


    getWindow().addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS); 
    getWindow().setStatusBarColor(getResources().getColor(R.color.primary_dark)); 
    getWindow().setNavigationBarColor(getResources().getColor(R.color.primary_dark)); 

    initToolbar(); 

} 

private void initToolbar() { 
    mToolbar = (Toolbar) findViewById(R.id.toolbar); 
    mToolbar.setTitleTextColor(Color.WHITE); 
    mToolbar.setTitle(R.string.app_shortname); 
    mToolbar.showOverflowMenu(); 
} 

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    getMenuInflater().inflate(R.menu.menu_overflow, menu); 
    return true; 
} 

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    // Handle action bar item clicks here. The action bar will 
    // automatically handle clicks on the Home/Up button, so long 
    // as you specify a parent activity in AndroidManifest.xml. 
    int id = item.getItemId(); 

    //noinspection SimplifiableIfStatement 
    if (id == R.id.action_settings) { 
     return true; 
    } 

    return super.onOptionsItemSelected(item); 
} 

menu.xml

<menu xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:app="http://schemas.android.com/apk/res-auto"> 

<item 
    android:id="@+id/action_settings" 
    android:orderInCategory="100" 
    android:title="@string/action_settings" 
    android:showAsAction="always" 
    android:visible="true"/> 

</menu> 

risposta

8

Se si desidera aggiungere l'articolo nel menu di overflow, è necessario impostare never come android:showAsAction. Se imposti always, l'elemento sarà un'icona nella barra degli strumenti.

Modifica il tuo menu.xml in questo modo:

<menu xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto"> 

    <item 
     android:id="@+id/action_settings" 
     android:orderInCategory="100" 
     android:title="@string/action_settings" 
     android:showAsAction="never" 
     android:visible="true" /> 

</menu> 

Inoltre è necessario chiamare setActionBar(). Modifica initToolbar() come questo:

private void initToolbar() { 
    mToolbar = (Toolbar) findViewById(R.id.toolbar); 
    mToolbar.setTitleTextColor(Color.WHITE); 
    mToolbar.setTitle("gnappo"); 
    mToolbar.showOverflowMenu(); 
    setActionBar(mToolbar); 
} 
+0

Non sto cercando di aggiungere un elemento al menu- Sto cercando di aggiungere il pulsante del menu reale. Non riesco a visualizzare il menu di overflow e non so come farlo. – Nxt3

+0

Non è possibile avere il menu di overflow senza voce in esso. Se imposti 'android: show as action =" never "' l'overflow si presenta con l'elemento _settings_ –

+0

Questo è quello che sto dicendo. Sto usando quello che mi hai dato. Non ho nemmeno l'icona del menu di overflow che appare nella mia barra degli strumenti. – Nxt3

3

Se la barra degli strumenti è del pacchetto android.support.v7.widget, utilizzare setSupportActionBar(mToolbar); invece di setActionBar(mToolbar);

+0

Se dobbiamo impostare tutte le cose tramite la barra delle azioni di supporto, qual è la domanda sull'utilizzo della barra degli strumenti? – blackHawk

Problemi correlati