如何在工具栏上居中操作菜单

时间:2014-10-29 10:12:43

标签: android android-5.0-lollipop android-toolbar

我有一个带有split action bar加载操作菜单的应用程序。

我更改了新工具栏的操作栏,并用独立模式中使用的其他工具栏替换了拆分操作栏:

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

如文档中所指定,操作菜单位于工具栏右侧的引脚: enter image description here

但是我希望图标在工具栏上居中,就像在分割操作栏上一样: enter image description here

如何让操作菜单占用工具栏上的所有可用空间?

工具栏专用于此菜单,其他任何内容都不会添加到其中。

回答

接受的答案链接指向拆分工具栏。如果像我一样,你需要这个代码非常简单:

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

信用证转到:https://gist.github.com/dodgex/7bc81fd2cbb70a8d5117

2 个答案:

答案 0 :(得分:6)

在这种情况下,Chris Banes建议使用ActionMenuView而不是Toolbar(请参阅下面的链接,回复#6)。除此之外,在这个链接中,你可以找到一个解决方案,其中人员子类化工具栏,以便拆分正常工作。

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

希望它可以帮到你!

答案 1 :(得分:1)

过去几周我一直试图找到这个问题的答案。我发现的最接近的事情利用了Toolbar只是一个ViewGroup这一事实。您需要做的就是创建menu_items布局,该布局只是LinearLayout,并且添加了相同的加权menu items。我知道这不是一个理想的解决方案,但我还是没有找到使用默认菜单时展开的项目。

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