【问题标题】:Item separator for context menu in AndroidAndroid中上下文菜单的项目分隔符
【发布时间】:2012-05-11 23:33:35
【问题描述】:

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

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

【问题讨论】:

  • 上下文菜单以列表的形式显示内容,细线作为分隔符你想添加什么样的分隔符?
  • 嗯,我的意思是一个独特的分隔符。在大多数其他编程环境中,都有一个特殊的分隔符“项目”,它显示项目组之间的逻辑边界。例如,您可以查看 Chrome 设置菜单。

标签: android


【解决方案1】:

首先我想到了一个解决方法——上下文菜单的自定义实现,例如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>

Java

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);
}

【讨论】:

    【解决方案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)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-03-04
      相关资源
      最近更新 更多