2014-10-29 19 views
6

Mam aplikację z split action bar ładowaniem menu akcji.Jak wyśrodkować menu akcji na pasku narzędzi

Zmieniłem actionbar dla nowego paska narzędzi i zastąpił actionbar podzielone przez innego paska narzędzi stosowanych w trybie autonomicznym:

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

Jak określono w dokumentacji menu Akcja jest pin po prawej stronie paska narzędzi: enter image description here

Ale chciałbym ikon, aby koncentrować się na pasku narzędzi, jak to było na actionbar dzielone: ​​ enter image description here

Jak ustawić, aby menu czynności zajmowało całe dostępne miejsce na pasku narzędzi?

Pasek narzędzi jest przeznaczony dla tego menu, nic więcej nie zostanie na nim dodane.

Odpowiedź

Zaakceptowanych odpowiedź na związek ołowiu na pasku podziału. Jeśli tak jak ja masz bardzo prostą potrzebę ten kod jest wystarczająco dobry:

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

zasługa: https://gist.github.com/dodgex/7bc81fd2cbb70a8d5117

+0

Sprawdź również: http://stackoverflow.com/questions/34546160/how-to-enable-split-action-bar/34546493#34546493 – piotrek1543

Odpowiedz

6

W takim przypadku Chris Banes zaleca użycie ActionMenuView zamiast paska narzędzi (patrz link poniżej, odpowiedź nr 6). Poza tym, w tym łączu możesz znaleźć rozwiązanie, w którym facet podzielił Toolbar w celu podziału działa poprawnie.

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

Nadzieję, że to pomaga!

+1

Korzystanie z SplitToolbar szczegółowo w komentarzu do wątku załatwiło sprawę: https://gist.github.com/dodgex/7bc81fd2cbb70a8d5117 – grunk

1

Ja również stara się znaleźć odpowiedź na to pytanie w ciągu ostatnich kilku tygodni. A najbliższa rzecz, którą znalazłem, wykorzystuje fakt, że Toolbar to tylko ViewGroup. Wszystko, co musisz zrobić, to stworzyć układ menu_items, który jest tylko LinearLayout z dodaniem równie ważonego menu items. Wiem, że to nie jest idealne rozwiązanie, ale i tak nie znalazłem, by rozłożyć przedmioty przy użyciu domyślnego menu.

<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

Czy nadal możesz używać inflateMenu() i setOnMenuItemClickListener() z tym rozwiązaniem? – grunk

+0

Tak i nie. Jeśli używasz menu z opcją przepełnienia, nadal możesz korzystać z domyślnych metod, jednak w przypadku innych elementów menu musisz ustawić układy za pomocą XML i osobiście odsłuchać zdarzenia onClick. – MrEngineer13

+0

Nie ma powodu, aby korzystać z paska narzędzi, lepiej utworzyć niestandardowy widok :( – grunk