如何将工具栏上的动作菜单居中

问题描述:

我有一个应用程序,其中加载了一个动作菜单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

+0

另请参见:http://stackoverflow.com/questions/34546160/how-to-enable-split-action-bar/34546493#34546493 – piotrek1543 2015-12-31 15:06:04

在这种情况下,Chris Banes建议使用ActionMenuView而不是Toolbar(请参阅下面的链接,回复#6)。除此之外,在这个链接中,你可以找到一个解决方案,在这个解决方案中,分组工具栏为了分割工作正确。

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

希望它可以帮助你!

+1

在线程的评论中使用详细的SplitToolbar做的窍门:https://gist.github.com/dodgex/7bc81fd2cbb70a8d5117 – grunk 2014-11-05 08:50:47

我也一直在试图找到一个回答这个问题在过去的几个星期。我发现的最接近的事物是利用了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> 
+1

您是否仍然可以在此解决方案中使用inflateMenu()和setOnMenuItemClickListener()? – grunk 2014-10-31 14:29:30

+0

是的,没有。如果您使用的是溢出菜单,则仍然可以使用默认方法来处理其他菜单项,您需要通过XML设置布局并自己监听onClick事件。 – MrEngineer13 2014-10-31 14:57:39

+0

没有理由使用工具栏然后,更好地创建一个自定义视图:( – grunk 2014-10-31 15:30:38