2014-10-29 2 views
6

Ho un'applicazione con un split action bar che carica un menu di azioni.Come centrare il menu azioni sulla barra degli strumenti

ho cambiato l'ActionBar per la nuova barra degli strumenti e sostituito l'ActionBar scissione da un'altra barra degli strumenti utilizzato in modalità standalone: ​​

Toolbar toolbarBottom = (Toolbar) findViewById(R.id.toolbarBottom); 
toolbarBottom.inflateMenu(R.menu.ab_one_cam); 

Come specificato nella documentazione menu azione è pin alla destra della barra degli strumenti: enter image description here

ma vorrei icone per essere centrato sulla barra degli strumenti, come se fosse sulla scissione ActionBar: enter image description here

Come posso fare in modo che il menu azioni occupi tutto lo spazio disponibile sulla barra degli strumenti?

La barra degli strumenti è dedicata a questo menu, nient'altro verrà aggiunto su di esso.

risposta

collegamento del risposta accettata portare ad una barra degli strumenti di divisione. Se come me avete molto semplice bisogno di questo codice è abbastanza buono:

public class SplitToolbar extends Toolbar { 

    public SplitToolbar(Context context) { 
     super(context); 
    } 

    public SplitToolbar(Context context, AttributeSet attrs) { 
     super(context, attrs); 
    } 

    public SplitToolbar(Context context, AttributeSet attrs, int defStyleAttr) { 
     super(context, attrs, defStyleAttr); 
    } 

    @Override 
    public void addView(View child, ViewGroup.LayoutParams params) { 
     if (child instanceof ActionMenuView) { 
      params.width = LayoutParams.MATCH_PARENT; 
     } 
     super.addView(child, params); 
    } 
} 

merito va a: https://gist.github.com/dodgex/7bc81fd2cbb70a8d5117

+0

Controllare anche: http://stackoverflow.com/questions/34546160/how-to-enable-split-action-bar/34546493#34546493 – piotrek1543

risposta

6

In questo caso, Chris Banes raccomanda di utilizzare ActionMenuView invece di barra degli strumenti (vedi il link qui sotto, rispondere # 6). Oltre a ciò, in questo link puoi trovare una soluzione in cui il ragazzo ha sottocloppato Toolbar in modo che la divisione funzioni correttamente.

https://code.google.com/p/android/issues/detail?id=77632#c2

Spero che ti aiuta!

+1

L'uso della SplitToolbar dettagliata nel commento del thread ha fatto il trucco: https://gist.github.com/dodgex/7bc81fd2cbb70a8d5117 – grunk

1

Ho anche cercato di trovare una risposta a questa domanda le ultime due settimane. E la cosa più vicina che ho trovato si avvantaggia del fatto che lo Toolbar è solo un ViewGroup. Tutto quello che devi fare è creare un layout menu_items che sia solo un LinearLayout con uguale menu items ugualmente ponderato. So che questa non è una soluzione ideale, ma non ho trovato comunque la diffusione degli elementi durante l'utilizzo del menu predefinito.

<android.support.v7.widget.Toolbar 
     android:id="@+id/toolbar_btm" 
     android:layout_height="wrap_content" 
     android:layout_width="match_parent" 
     android:minHeight="?attr/actionBarSize" 
     android:background="@color/toolbar_bkgnd" 
     android:layout_alignParentBottom="true" 
     app:theme="@style/ThemeOverlay.AppCompat.ActionBar" > 

     <include layout="@layout/menu_items"/> 

     </android.support.v7.widget.Toolbar> 
+1

È ancora possibile utilizzare inflateMenu() e setOnMenuItemClickListener() con questa soluzione? – grunk

+0

Sì e no. Se si utilizza un menu di overflow, è comunque possibile utilizzare i metodi predefiniti per quelli, tuttavia per le altre voci di menu sarà necessario impostare i layout tramite XML e ascoltare personalmente gli eventi onClick. – MrEngineer13

+0

Nessun motivo per utilizzare una barra degli strumenti, meglio creare una vista personalizzata :( – grunk