Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to center action menu on toolbar

I have an application with a split action bar loading an action menu.

I changed the actionbar for the new toolbar and replaced the split actionbar by an other toolbar used in standalone mode :

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

As specified in the documentation the action menu is pin to the right of the toolbar : enter image description here

But i would like the icons to be centered on the toolbar , like it was on the split actionbar : enter image description here

How can i make the action menu take all the available space on the toolbar ?

The toolbar is dedicated to this menu , nothing else will be added on it.

Answer

The accepted answer's link lead to a split toolbar. If like me you have very simple need this code is good enough :

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

Credit goes to : https://gist.github.com/dodgex/7bc81fd2cbb70a8d5117

like image 613
grunk Avatar asked Oct 29 '14 10:10

grunk


Video Answer


1 Answers

In this case, Chris Banes recommends to use ActionMenuView instead of Toolbar (see the link below, reply #6). Besides that, in this link you can find a solution where the guy subclassed Toolbar in order to the split works right.

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

Hope it helps you!

like image 173
Rodrigo Borges Avatar answered Oct 01 '22 09:10

Rodrigo Borges