我有一个菜单(jsfiddle),如下所示,它是由<ul>和<li>元素构建的。

子菜单元素显示在父元素下方,并且容器是固定宽度的<ul>。我遇到的问题是,对于右侧的菜单元素,第二级<ul>溢出了父元素的宽度,如下所示:

如何确保子菜单显示如第一张图片所示,但对于更靠右的菜单元素,仅移动到右边框,保持大小不变,而不是溢出?

如果我在 Shiny 中使用以下 UI,我会大致得到我想要的输出,但它实际上不起作用,因为最低级别的 navbarMenu 显示它的顶级标签和指示它可扩展但无法注册子项的箭头。我的猜测是因为这仅被设计为顶级元素(导航栏菜单)。我的问题是,是否还有另一个元素可以执行所需的子菜单任务?无法在菜单项下分组将很快变得视觉效率低下。
shinyUI(navbarPage("My Application",
tabPanel("Component 1"),
tabPanel("Component 2"),
navbarMenu("More",
tabPanel("Sub-Component A"),
tabPanel("Sub-Component B"),
navbarMenu("Yet More",
tabPanel("Subpart 1"),
tabPanel("Subpart 2"))
)
)
)
Run Code Online (Sandbox Code Playgroud) 当用户右键单击 notifyicon 数据(托盘图标)时,我想向我的 win32 应用程序(c++)添加右键单击上下文菜单/子菜单。我可以制作一个简单的一级菜单,但找不到多级菜单的示例。
我想创建一个看起来像这样的菜单:
Settings -> Setting 1 -> Setting 2
-> Setting 3
-> Settings 4 -> Setting 5
-> Setting 6
Exit
Run Code Online (Sandbox Code Playgroud)
我正在使用以下代码创建菜单:
HMENU hPopupMenu = CreatePopupMenu();
InsertMenu(hPopupMenu, 0, MF_BYPOSITION | MF_STRING, IDM_EXIT, L"Exit");
SetForegroundWindow(hWnd);
TrackPopupMenu(hPopupMenu, TPM_BOTTOMALIGN | TPM_RIGHTALIGN, p.x, p.y, 0, hWnd, NULL);
Run Code Online (Sandbox Code Playgroud)
上面的代码放置在notifyicondata消息处理程序(WM_RBUTTONUP)内。
如何使用上面的代码创建子菜单?我是否创建一个新的 HMENU 并将其插入到父菜单中?
另一件让我困扰的事情是,菜单总是在触发右键单击事件时创建,因此每次触发时都会创建一个新的 HMENU。是否可以在应用程序启动时创建菜单(带有子菜单)并在应用程序关闭时销毁它?Windows 是否处理菜单的销毁?
感谢您的回复。
我有一个win32应用程序(c ++),右键单击通知图标绑定上下文菜单.菜单/子菜单项在运行时动态创建和更改.
InsertMenu(hSettings, 0, MF_BYPOSITION | MF_POPUP | MF_STRING, (UINT_PTR) hDevices, L"Setting 1");
InsertMenu(hSettings, 1, MF_BYPOSITION | MF_POPUP | MF_STRING, (UINT_PTR) hChannels, L"Setting 2");
InsertMenu(hMainMenu, 0, MF_BYPOSITION | MF_POPUP | MF_STRING, (UINT_PTR) hSettings, L"Settings");
InsertMenu(hMainMenu, 1, MF_BYPOSITION | MF_STRING, IDM_EXIT, L"Exit");
Run Code Online (Sandbox Code Playgroud)
在上面的代码中,hDevices和hChannels是动态生成的子菜单.动态菜单生成如下:
InsertMenu(hDevices, i, style, IDM_DEVICE, L"Test 1");
InsertMenu(hDevices, i, style, IDM_DEVICE, L"Test 2");
InsertMenu(hDevices, i, style, IDM_DEVICE, L"Test 3");
Run Code Online (Sandbox Code Playgroud)
有没有办法知道哪个项目被点击而不必定义每个子菜单项它自己的ID(上面代码中的IDM_DEVICE)?想要检测用户点击子菜单IDM_DEVICE并且他点击了此子菜单中的第一个项目(测试1).
我想得到这样的东西:
case WM_COMMAND:
wmId = LOWORD(wParam);
wmEvent = HIWORD(wParam);
// Parse the menu selections:
switch (wmId)
{
case IDM_DEVICE: …Run Code Online (Sandbox Code Playgroud) 我正在尝试创建一个浮动到右侧的子菜单.但是,我撞到了一堵砖墙,只能让它浮在水面上.
http://jsfiddle.net/jspring/yD9N4/
您可以在此处看到(虽然它比正常情况稍宽)子菜单只显示在父列表项中.如果有人能帮我把它漂到右边那就太好了!
<ul class="cl-menu">
<li>Link 1
<ul>
<li><a href="#">Sub Link 1</a>
</li>
<li><a href="#">Sub Link 2</a>
</li>
</ul>
</li>
<li>Link 2
<ul>
<li><a href="#">Sub Link 1</a>
</li>
<li><a href="#">Sub Link 2</a>
</li>
</ul>
</li>
</ul>
.cl-menu{
list-style:none outside none;
display:inline-table;
position:relative;
width:100%;
}
.cl-menu li{
list-style:none outside none;
border-bottom:1px solid #cccccc;
padding:5px 1px;
text-align:center;
}
.cl-menu > li:hover{
/*background-color:#303030;*/
background-color:#66819C;
color:#FFF;
font-weight:bold;
text-decoration:underline;
opacity:1;
}
.cl-menu li ul{
display:none;
}
.cl-menu li:hover ul{
display:block;
opacity:0.8;
background-color:#FFF;
margin-top:4px;
font-weight:normal !important; …Run Code Online (Sandbox Code Playgroud) 我目前正在尝试在导航菜单上为具有子菜单选项的项目添加箭头指示器.
目前我正在使用这个CSS:
.mainNav li > a:after {
color: #444;
content: ' ?';
}
Run Code Online (Sandbox Code Playgroud)
但是这会向每个人添加一个下拉箭头,<li>无论是否存在子菜单.有没有办法只用CSS只将这个箭头添加到有子项的项目?
谢谢!
我用菜单和子菜单填充了我的 NSPopUpButton。
当我在根菜单上选择一个菜单项(因此,不是子菜单项)时,它会显示所选的菜单项。当我重新单击弹出按钮时,我会在鼠标下获得选定的菜单项。
但是如果我选择一个子菜单项,它不会显示它。如果我重新单击弹出按钮,我不会在鼠标下看到它。每当我单击按钮时,我都必须在菜单层次结构中查找所选项目。
有什么解决办法吗?
我想弄清楚如何更改实际附加到导航视图的子菜单项的颜色。以下代码实际上来自android studio中可用的Navigation Drawer的默认模板。
activity_main_drawer.xml
Run Code Online (Sandbox Code Playgroud)<?xml version="1.0" encoding="utf-8"?> <menu xmlns:android="http://schemas.android.com/apk/res/android"> <group android:checkableBehavior="single"> <item android:id="@+id/nav_camara" android:icon="@android:drawable/ic_menu_camera" android:title="Import" /> <item android:id="@+id/nav_gallery" android:icon="@android:drawable/ic_menu_gallery" android:title="Gallery"/> <item android:id="@+id/nav_slideshow" android:icon="@android:drawable/ic_menu_slideshow" android:title="Slideshow"/> <item android:id="@+id/nav_manage" android:icon="@android:drawable/ic_menu_manage" android:title="Tools"/> </group> <item android:title="Communicate"> <menu> <item android:id="@+id/nav_share" android:icon="@android:drawable/ic_menu_share" android:title="Share"/> <item android:id="@+id/nav_send" android:icon="@android:drawable/ic_menu_send" android:title="Send"/> </menu> </item> </menu>
活动_main.xml
Run Code Online (Sandbox Code Playgroud)<include layout="@layout/app_bar_main" android:layout_width="match_parent" android:layout_height="match_parent"/> <android.support.design.widget.NavigationView android:id="@+id/nav_view" android:layout_width="wrap_content" android:layout_height="match_parent" android:layout_gravity="start" android:fitsSystemWindows="true" android:background="#512DA8" app:headerLayout="@layout/nav_header_main" app:menu="@menu/activity_main_drawer" app:itemTextColor="@drawable/nav_menu_item_color" app:itemIconTint="@drawable/nav_menu_item_color"/> </android.support.v4.widget.DrawerLayout>
我有一个用于单击和正常颜色的可绘制文件,上面实际使用了它。nav_menu_item_color.xml
Run Code Online (Sandbox Code Playgroud)<?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <selector> <item android:color="@color/navTextHover" android:state_checked="true" /> <item android:color="@color/navTextNormal" /> </selector>
颜色不适用于子菜单,所以,我想做的是..我想更改菜单项“通信”和子菜单项“发送”和“共享”的颜色,因为它适用于根菜单项
我无法更改子菜单标题的颜色,请参见下图.
我可以更改NavigationView的背景,字体的颜色和图标的颜色,但我在子菜单标题上找不到答案.
例如
<android.support.design.widget.NavigationView
android:id="@+id/navigation_view"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_gravity="start"
android:background="@color/white"
app:itemBackground="@color/white"
app:itemIconTint="@color/dark_green"
app:itemTextColor="@color/dark_green"
app:headerLayout="@layout/drawer_header"
app:menu="@menu/drawer" />
Run Code Online (Sandbox Code Playgroud)
这是我的菜单xml:
<group android:checkableBehavior="single">
<item
android:checked="true"
android:icon="@drawable/ic_attachment"
android:title="@string/nav_item_attachment" />
<item
android:icon="@drawable/ic_image"
android:title="@string/nav_item_images" />
<item
android:icon="@drawable/ic_place"
android:title="@string/nav_item_location" />
</group>
<item android:title="@string/nav_sub_menu">
<menu>
<item
android:icon="@drawable/ic_emoticon"
android:title="@string/nav_sub_menu_item01" />
<item
android:icon="@drawable/ic_emoticon"
android:title="@string/nav_sub_menu_item02" />
</menu>
</item>
Run Code Online (Sandbox Code Playgroud)
请指教.:-).
android textcolor submenu navigationview android-navigationview
我想添加子菜单项组的标题。我不想使用隐藏并在单击时打开的子菜单,我想实现菜单项组的标题。所以现在我的菜单看起来像这样:
但我想这样实现它:
现在我的 XML 看起来像这样,但它使用嵌套子菜单:
<?xml version="1.0" encoding="utf-8"?>
<menu
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
>
<group
android:id="@+id/group_1"
android:checkableBehavior="single"
>
<item
android:id="@+id/apps_sort_title"
android:title="@string/apps_sort_title"
app:showAsAction="ifRoom"
/>
<item
android:id="@+id/apps_sort_date"
android:title="@string/apps_sort_date"
app:showAsAction="ifRoom"
/>
<item
android:id="@+id/apps_sort_size"
android:title="@string/apps_sort_size"
app:showAsAction="ifRoom"
/>
</group>
<item android:title="@string/title_order">
<menu>
<group
android:id="@+id/group_2"
android:checkableBehavior="single"
>
<item
android:id="@+id/apps_sort_asc"
android:title="@string/sort_asc"
app:showAsAction="ifRoom"
/>
<item
android:id="@+id/apps_sort_desc"
android:title="@string/sort_desc"
app:showAsAction="ifRoom"
/>
</group>
</menu>
</item>
</menu>
Run Code Online (Sandbox Code Playgroud)
提前致谢!