Android中上下文菜单的项分隔符

时间:2012-05-02 13:23:55

标签: android

是否可以在Android的上下文菜单中的菜单项之间添加分隔符?我在文档中没有看到任何相关说明。显然,菜单项在执行不同类型的操作时应该分开。

NB。问题是关于上下文菜单,而不是选项菜单。

2 个答案:

答案 0 :(得分:3)

首先,我想到了一个解决方法 - 上下文菜单的自定义实现,例如Icon Context Menu。这样的代码允许将菜单项类扩展到具有自定义视图的特定菜单分隔符类。

...但是过了一段时间后我发现了......

另一个(更简单)解决方案可能是添加一个带有'_'(下划线)字符行的菜单项(令人惊讶的是,这是标准 Android字体中唯一可以显示多个实例的符号顺利地并排,没有间隙),然后使用SpannableString在Java代码中对齐项目文本。

字符串资源

<string name="hr">______________________________</string>

根据需要调整字符串长度。

菜单布局

<group android:checkableBehavior="none" android:enabled="false">
   <item android:id="@+id/menu_gap"
      android:title="@string/hr"
      android:enabled="false" />
</group>

<强>爪哇

private void alignCenter(MenuItem item)
{
    SpannableString s = new SpannableString(item.getTitle());
    s.setSpan(new AlignmentSpan.Standard(Alignment.ALIGN_CENTER), 0, s.length(), 0);
    item.setTitle(s);
}

答案 1 :(得分:0)

我无法发表评论,也许我来晚了,但我希望这会对某人有所帮助。据我所知:如果您通过ContextMenu.setGroupDividerEnabled启用,Android会在组之间添加分隔符。

@Override
public void onCreateContextMenu(ContextMenu menu, View view, ContextMenu.ContextMenuInfo menuInfo) {
    super.onCreateContextMenu(menu, view, menuInfo);
    menu.setHeaderTitle(R.string.choose_action);
    menu.add(0, MENU_ITEM_CREATE, 0, R.string.create);
    menu.add(1, MENU_ITEM_CHECK, 0, R.string.check);
    menu.add(2, MENU_ITEM_EDIT, 0, R.string.edit);
    menu.add(2, MENU_ITEM_DELETE, 1, R.string.delete);

    // Enable group separator
    menu.setGroupDividerEnabled(true);
}

https://developer.android.com/reference/android/view/Menu#setGroupDividerEnabled(boolean)