在Android中为MenuItem添加边距

时间:2015-10-20 11:18:00

标签: android android-layout

我正在尝试在工具栏的右侧创建一个文本菜单,左边距为16dp。有没有人知道如何通过添加到以下代码来设置16dp边距?

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    final MenuItem menuItem = menu.add(Menu.NONE, 100, Menu.NONE, getString(R.string.menu_done));
    MenuItemCompat.setShowAsAction(menuItem, MenuItem.SHOW_AS_ACTION_IF_ROOM);
    return true;
}

2 个答案:

答案 0 :(得分:4)

使用java:

View view = new View(this);
menuItem.setActionView(view);
view.setPadding(16,0,0,0); //left , top ,right , bottom

或XML:

将此样式添加到工具栏中,以获取图标。

 <style name="myToolbarStyle" parent="@style/Widget.AppCompat.Toolbar">
    <item name="android:paddingLeft">16dp</item>
</style>

当然,如果您有更多商品,则需要为要填充的商品创建特定样式。

答案 1 :(得分:0)

由于@Lazai的答案 我的实施

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.menu_main, menu);
    View view = new View(getApplicationContext());
    view.setLayoutParams(new ViewGroup.LayoutParams(ViewUtil.dp2px(16),
            ViewGroup.LayoutParams.MATCH_PARENT));
    MenuItem space = menu.findItem(R.id.space);
    space.setActionView(view);
    //...
    return true;
}

其中ViewUtil.dp2px(16)

@SuppressWarnings("unused")
public static int dp2px(int dp) {
    float density = Resources.getSystem().getDisplayMetrics().density;
    return Math.round(dp * density);
}

工作正常且无法点击