如何更改 Android 上小部件工具栏图标之间的 space 大小?

how to change space size between widget toolbar icons on Android?

我的应用程序上有一个带有 4 个图标的工具栏小部件,我想将这些图标之间的 space 大小更改为相同。

形成这样的: current design

变成这样: wanted design

menu.xml

<?xml version="1.0" encoding="utf-8"?>

<item
    android:id="@+id/action_home"
    android:orderInCategory="100"
    android:icon="@drawable/white_home"
    android:title="@string/action_settings"
    app:showAsAction="always" />

<item
    android:id="@+id/action_profile"
    android:orderInCategory="101"
    android:icon="@drawable/white_profile"
    android:title="@string/action_settings"
    app:showAsAction="always" />

<item
    android:id="@+id/action_inbox"
    android:orderInCategory="102"
    android:icon="@drawable/white_inbox"
    android:title="@string/action_settings"
    app:showAsAction="always" />

<item
    android:id="@+id/action_contacts"
    android:orderInCategory="103"
    android:icon="@drawable/white_contacts"
    android:title="@string/action_settings"
    app:showAsAction="always" />

app_bar_main.xml

<android.support.design.widget.AppBarLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:theme="@style/AppTheme.AppBarOverlay">

    <android.support.v7.widget.Toolbar
        android:id="@+id/toolbar"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="?attr/colorPrimary"
        app:popupTheme="@style/AppTheme.PopupOverlay" />

</android.support.design.widget.AppBarLayout>

<include layout="@layout/content_main" />

<android.support.design.widget.FloatingActionButton
    android:id="@+id/fab"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="bottom|end"
    android:layout_margin="@dimen/fab_margin"
    app:srcCompat="@drawable/ic_fab_plus"
    app:backgroundTint="@color/colorPrimary" />

提前致谢。

这里 example 介绍了如何破解工具栏以在其中放置项目以填满其全部宽度。

要点是您需要声明您自己的工具栏的继承者,您将在其中重写 addView 方法:

@Override
public void addView(View child, ViewGroup.LayoutParams params) {
    if (child instanceof ActionMenuView) {
        params.width = LayoutParams.MATCH_PARENT;
    }
    super.addView(child, params);
}

已更新

如果您希望能够通过xml修改操作项之间的space并且不想扩展Toolbar.class并且您还可以将工具栏用作操作栏(我看到您调用 setSupportActionBar() 然后 can changstyles.xml 资源文件中使用您的应用程序主题:

<style name="AppTheme" parent="AppBaseTheme">
    <item name="android:actionButtonStyle">@style/MyActionButtonStyle</item>
</style>

<style name="MyActionButtonStyle" parent="AppBaseTheme">
    <item name="android:minWidth">20dp</item>
    <item name="android:padding">0dp</item>
</style>