2015-01-22 17 views
6

Ho appena adottato la barra degli strumenti di progettazione dei materiali nella mia app. Ho seguito la guida di Chris Banes blog a farlo funzionare su dispositivi pre-Lollipop Tuttavia, sembra che non posso ottenere le mie voci di menu azione da verticale centrati.Menu di scelta rapida della barra degli strumenti di progettazione del materiale Android non allineato correttamente

Ecco uno screenshot di quello che sembra sul dispositivo Kitkat. Kitkat screenshot

Come si può vedere il titolo e le icone del menu non sono allineati. In qualche modo, il titolo è allineato correttamente ma non i menu di azione né l'icona di navigazione. Sono invece allineati al fondo.

Ecco il mio layout della barra degli strumenti

<android.support.v7.widget.Toolbar 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/toolbar" 
    android:layout_width="match_parent" 
    android:layout_height="?android:attr/actionBarSize" 
    android:background="?attr/colorPrimaryDark"/> 

Ho provato a mettere Android: la gravità del layout, ma non fa nulla.

Ecco il mio codice astratto attività che assegnano barra degli strumenti come barra di azione

public abstract class BaseMaterialActivity extends ActionBarActivity { 

private Toolbar toolbar; 

public abstract int getLayoutResources(); 

public abstract boolean isShowActionBar(); 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(getLayoutResources()); 
    if (isShowActionBar()) { 
     toolbar = (Toolbar) findViewById(R.id.toolbar); 
     if (toolbar != null) { 
      setSupportActionBar(toolbar); 
      toolbar.setNavigationIcon(getResources().getDrawable(R.drawable.ic_drawer)); 
      getSupportActionBar().setDisplayHomeAsUpEnabled(true); 
      getSupportActionBar().setDisplayShowTitleEnabled(true); 
      getSupportActionBar().setHomeAsUpIndicator(R.drawable.ic_nav_back); 
     } 
    } 
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { 
     getWindow().addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS); 
    } 
} 

public Toolbar getToolbar() { 
    return toolbar; 
} 

}

Ecco il mio 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_filter" 
     android:icon="@drawable/ic_filter" 
     android:orderInCategory="1" 
     app:showAsAction="always|withText" 
     android:title="@string/filters" /> 

    <item 
     android:id="@+id/action_cart" 
     app:actionLayout="@layout/action_cart_icon_layout" 
     android:orderInCategory="2" 
     app:showAsAction="always" 
     android:title="@string/cart" /> 


</menu> 

Qualsiasi aiuto o puntatore su come ottenere il il menu di azione per essere centrato verticalmente sarebbe apprezzato. Grazie!

risposta

11

Invece di

android:layout_height="?android:attr/actionBarSize" 

scrittura

android:layout_height="?actionBarSize" 

Il secondo è definito dal tema AppCompat con altezza corretta (default 56dp, 48DP nel paesaggio normale e 64DP su tavolette).

Nota: Quello che hai scritto avrebbe funzionato correttamente solo su Android 5.0.

+1

oh mio dio! Funziona!! Questo mi sta facendo impazzire! grazie!! –

Problemi correlati