System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本申请涉及计算机用户界面,尤其是涉及到一种基于宽度自适应的菜单栏显示方法、装置、介质及设备。
技术介绍
1、传统的右键菜单在计算机应用程序中被广泛使用,为用户提供了一种快速访问常用功能的方式。然而,固定宽度的右键菜单存在一些限制,例如无论菜单项的内容长度如何,它们的宽度通常是固定的或仅能粗略适应内容长度,这导致菜单项内容显示不全或者菜单过宽影响美观性;或者,固定宽度的菜单在不同的设备和显示分辨率上可能无法提供最佳的用户体验(在高分辨率显示器或移动设备上,固定宽度可能显得过小或过大)等,导致在用户使用过程中给用户带来不便和不良体验。因此,为了解决这些问题,需要进一步研究和开发新的技术和方法来对右键菜单的显示进行改进,以提供更好的用户界面体验。
技术实现思路
1、有鉴于此,本申请实施例提供了一种基于宽度自适应的菜单栏显示方法、装置、介质及设备,根据菜单内容的实际长度动态调整菜单宽度,既避免了菜单内容显示不全的问题,又保证了菜单的整体美观性,提高了用户界面的友好性和实用性。
2、本公开实施例提供了一种基于宽度自适应的菜单栏显示方法,包括:
3、响应于对菜单栏的显示请求操作,获取所述菜单栏对应的菜单栏数组,其中,所述菜单栏数组包括所述菜单栏对应的每个菜单项的字符文本;
4、基于所述菜单栏数组中各菜单项的字符文本,确定用于计算各字符文本的显示宽度的目标字符文本;
5、创建临时文档对象模型,将所述目标字符文本传入至所述临时文档对象模型中,并获得所
6、基于所述目标显示宽度,为所述菜单栏数组中的每个菜单项添加宽度属性,并利用添加宽度属性后的菜单栏数组以及预设菜单栏右侧留白宽度值,以所述预设字体样式进行菜单栏渲染。
7、在一些可能的实施例中,所述基于所述菜单栏数组中各菜单项的字符文本,确定用于计算各字符文本的显示宽度的目标字符文本,包括:
8、在所述菜单栏数组中各菜单项的字符文本中识别最长字符文本,并基于所述最长字符文本确定所述目标字符文本。
9、在一些可能的实施例中,所述基于所述最长字符文本确定所述目标字符文本,包括:
10、若所述最长字符文本的长度小于或等于预设长度,则将所述最长字符文本确定为所述目标字符文本;
11、若所述最长字符文本的长度大于所述预设长度,则在所述菜单栏数组中各菜单项的字符文本中识别长度第二的字符文本;
12、若所述最长字符文本的长度与所述长度第二的字符文本的长度之间的差值小于或等于预设差值,则将所述最长字符文本确定为所述目标字符文本;
13、若所述最长字符文本的长度与所述长度第二的字符文本的长度之间的差值大于所述预设差值,则将所述长度第二的字符文本确定为所述目标字符文本。
14、在一些可能的实施例中,所述将所述长度第二的字符文本确定为所述目标字符文本之后,所述方法还包括:
15、对所述最长字符文本进行所述预设长度内的内容提炼,并将所述菜单栏数组中的所述最长字符文本替换为内容提炼得到的文本;或者,
16、对所述最长字符文本进行语义识别,基于语义识别结果在多个预设菜单项字符文本中确定与所述最长字符文本匹配的目标菜单项字符文本,并将所述菜单栏数组中的所述最长字符文本替换为所述目标菜单项字符文本,其中,若多个所述预设菜单项字符文本均与所述最长字符文本不匹配,则保持所述最长字符文本不变或者对所述最长字符文本进行内容提炼后替换所述最长字符文本,所述预设菜单项字符文本的长度小于或等于所述预设长度;或者,
17、对所述最长字符文本进行关键信息位置识别,并基于所述最长字符文本的关键信息位置,对所述菜单栏数组中所述最长字符文本对应的菜单项设置内容省略位置,其中,若所述关键信息位置在所述最长字符文本的前半段则所述内容省略位置为末尾省略,若所述关键信息位置在所述最长字符文本的后半段则所述内容省略位置为开头省略。
18、在一些可能的实施例中,所述利用添加宽度属性后的菜单栏数组以及预设菜单栏右侧留白宽度值,以所述预设字体样式进行菜单栏渲染,包括:
19、利用添加宽度属性后的菜单栏数组以及所述预设字体样式;
20、针对任一菜单项,若所述菜单项设置有内容省略位置,则基于所述内容省略位置、所述菜单项对应的字符文本以及所述预设菜单栏右侧留白宽度值,以所述预设字体样式进行所述菜单项的渲染;若所述菜单项未设置内容省略位置,则基于末尾省略方式、所述菜单项对应的字符文本以及所述预设菜单栏右侧留白宽度值,以所述预设字体样式进行所述菜单项的渲染。
21、在一些可能的实施例中,所述创建临时文档对象模型,将所述目标字符文本传入至所述临时文档对象模型中,并获得所述临时文档对象模型基于预设字体样式测量出的所述目标字符文本对应的目标显示宽度,包括:
22、在html文档中创建隐藏的span元素作为所述临时文档对象模型,在所述span元素中设置预设字体样式,将所述目标字符文本设置为所述html span元素的文本内容,以使所述span元素基于offsetwidth属性测量所述目标字符文本的像素宽度,并通过读取所述span元素的offsetwidth属性获得所述目标字符文本的像素宽度作为所述目标显示宽度;或者,
23、在html文档中创建可缩放矢量图像svg元素作为所述临时文档对象模型,使用text标签将所述目标字符文本添加为svg元素的文本,在所述svg元素中设置预设字体样式,以使所述svg元素基于getbbox()方法获取所述目标字符文本对应的文本元素边界信息,并基于所述文本元素边界信息确定所述目标显示宽度;或者,
24、在html文档中添加canvas元素,将所述目标字符文本传入所述canvas元素中,使用javascript获取所述canvas元素的引用,基于所述引用调用getcontext()方法来获取2d绘图上下文,对所述2d绘图上下文设置预设字体样式,并使用measuretext()方法获取所述2d绘图上下文返回的textmetrics对象,基于所述textmetrics对象确定所述目标显示宽度。
25、在一些可能的实施例中,所述响应于对菜单栏的显示请求操作,获取所述菜单栏对应的菜单项数组之前,所述方法还包括:
26、在浏览器对应的菜单栏的显示字体样式未被更改的情况下,基于默认字体样式确定所述预设字体样式;
27、在浏览器对应的菜单栏的显示字体样式被更改的情况下,基于更改后的字体样式确定所述预设字体样式;
28、其中,所述菜单栏包括基于鼠标右键触发显示的菜单栏、浏览器中网页自带的菜单栏、以及浏览器中网页基于触发操作而显示的菜单栏在中至少一种。
29、本公开实施例提供了一种基于宽度自适应的菜单栏显示装置,包括:
30、数组获取模块本文档来自技高网...
【技术保护点】
1.一种基于宽度自适应的菜单栏显示方法,其特征在于,所述方法包括:
2.根据权利要求1所述的方法,其特征在于,所述基于所述菜单栏数组中各菜单项的字符文本,确定用于计算各字符文本的显示宽度的目标字符文本,包括:
3.根据权利要求2所述的方法,其特征在于,所述基于所述最长字符文本确定所述目标字符文本,包括:
4.根据权利要求3所述的方法,其特征在于,所述将所述长度第二的字符文本确定为所述目标字符文本之后,所述方法还包括:
5.根据权利要求4所述的方法,其特征在于,所述利用添加宽度属性后的菜单栏数组以及预设菜单栏右侧留白宽度值,以所述预设字体样式进行菜单栏渲染,包括:
6.根据权利要求1所述的方法,其特征在于,所述创建临时文档对象模型,将所述目标字符文本传入至所述临时文档对象模型中,并获得所述临时文档对象模型基于预设字体样式测量出的所述目标字符文本对应的目标显示宽度,包括:
7.根据权利要求1所述的方法,其特征在于,所述响应于对菜单栏的显示请求操作,获取所述菜单栏对应的菜单项数组之前,所述方法还包括:
9.一种存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至7中任一项所述的方法。
10.一种计算机设备,包括存储介质、处理器及存储在存储介质上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至7中任一项所述的方法。
...【技术特征摘要】
1.一种基于宽度自适应的菜单栏显示方法,其特征在于,所述方法包括:
2.根据权利要求1所述的方法,其特征在于,所述基于所述菜单栏数组中各菜单项的字符文本,确定用于计算各字符文本的显示宽度的目标字符文本,包括:
3.根据权利要求2所述的方法,其特征在于,所述基于所述最长字符文本确定所述目标字符文本,包括:
4.根据权利要求3所述的方法,其特征在于,所述将所述长度第二的字符文本确定为所述目标字符文本之后,所述方法还包括:
5.根据权利要求4所述的方法,其特征在于,所述利用添加宽度属性后的菜单栏数组以及预设菜单栏右侧留白宽度值,以所述预设字体样式进行菜单栏渲染,包括:
6.根据权利要求1所述的方法,其特征在于,所述创建临时文档对...
【专利技术属性】
技术研发人员:杨玉卿,李军,李嘉明,
申请(专利权)人:成都安易迅科技有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。