【问题标题】:How to center action menu on toolbar如何在工具栏上居中操作菜单
【发布时间】:2014-10-29 10:12:42
【问题描述】:

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

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

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

如文档中所述,操作菜单固定在工具栏的右侧:

但我希望图标在工具栏上居中,就像在拆分操作栏上一样:

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

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

回答

已接受答案的链接指向拆分工具栏。如果你像我一样有非常简单的需求,这段代码就足够了:

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

【问题讨论】:

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


【解决方案1】:

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

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

希望对你有帮助!

【讨论】:

【解决方案2】:

在过去的几周里,我也一直在努力寻找这个问题的答案。我发现的最接近的东西利用了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>

【讨论】:

  • 你还能在这个解决方案中使用 inflateMenu() 和 setOnMenuItemClickListener() 吗?
  • 是和不是。如果您使用溢出菜单,您仍然可以使用默认方法,但是对于其他菜单项,您需要通过 XML 设置布局并自己侦听 onClick 事件。
  • 没有理由使用工具栏,最好创建自定义视图:(
猜你喜欢
  • 2016-09-28
  • 2014-12-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-03-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多