4

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

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

4

2 回答 2

3

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

...但一段时间后我发现...

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

字符串资源

<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);
}
于 2012-06-01T10:11:56.520 回答
2

我无法发表评论,也许我来晚了,但我希望这会对某人有所帮助。据我所知:如果您通过 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)

于 2020-05-31T17:37:35.550 回答