2015-01-22 11 views
6

Właśnie wprowadziłem pasek narzędzi do projektowania materiałów do mojej aplikacji. Postępowałem zgodnie ze wskazówkami od Chrisa Banesa blog, aby działał on na urządzeniach pre-Lollipop. Wygląda jednak na to, że moje pozycje menu akcji nie mogą być pionowo wyśrodkowane.Menu niestandardowego menu narzędzi do projektowania systemu Android nie jest prawidłowo wyrównywane.

Oto zrzut ekranu pokazujący, jak to wygląda na urządzeniu KitKat. Kitkat screenshot

Jak widać tytuł i ikony menu nie są wyrównane. Jakoś tytuł jest wyrównany poprawnie, ale nie menu akcji ani ikona nawigacji. Zamiast tego są wyrównane do dołu.

Oto mój układ Pasek

<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"/> 

Próbowałem oddanie android: grawitację na układ, ale nie robi nic.

Oto moje streszczenie kod aktywności że przypisanie toolbar jak pasku akcji

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; 
} 

}

Oto moja 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> 

Każda pomoc lub wskazówka, w jaki sposób uzyskać menu akcji, które ma być pionowo wyśrodkowane, byłoby docenione. Dziękuję Ci!

Odpowiedz

11

Zamiast

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

zapisu

android:layout_height="?actionBarSize" 

Drugi jest określona przez tematu AppCompat z odpowiednią wysokość (domyślnie 56dp, 48DP w normalnej krajobrazie i 64dp w tabletkach).

Uwaga: To, co napisałeś, działa poprawnie tylko w systemie Android 5.0.

+1

o mój Boże! to działa!! To doprowadzało mnie do szału! Dziękuję Ci!! –

Powiązane problemy