一种文本折行实现方法、终端设备及存储介质与流程

文档序号:16627150发布日期:2019-01-16 06:13阅读:324来源:国知局
一种文本折行实现方法、终端设备及存储介质与流程

本发明涉及应用开发领域,尤其涉及一种文本折行实现方法、终端设备及存储介质。



背景技术:

文本折行,即是在当前视图下显示一段文字的前几行,这种折行显示方式既可能是因为当前视图无法显示这么多文字,也可能是界面美观需要,太多文字显得杂乱。设计文本折行对于网页界面十分有必要,开发人员常利用系统控件来定义文本显示。

目前,最常使用的方法是调用系统textview控件实现折行设计,而由于该控件功能较多,使用起来非常复杂,对于简单的折行,使用系统的textview控件会降低开发效率。



技术实现要素:

有鉴于此,本发明实施例提供了一种文本折行实现方法、终端设备及存储介质,以解决直接调用系统控件实现折行过于复杂的问题。

结合本发明实施例的第一方面,提供了一种文件折行实现方法,包括:

自定义一个textview,并获取自定义的textview的显示宽度,其中,所述自定义的textview用于显示折行文本;

获取所述折行文本中文字的宽度和高度;

根据所述折行文本中文字的宽度及所述自定义的textview的显示宽度,计算所述自定义的textview每一行最多可显示字数;

根据所述折行文本中文字的高度,计算所述自定义的textview的显示高度;

根据所述自定义的textview的显示宽度和显示高度,设置所述自定义的textview在父视图中的相对位置;

在所述自定义的textview上绘制折行后的显示文本。

结合本发明实施例的第二方面,提供了一种终端设备,包括:

第一获取模块:用于自定义一个textview,并获取自定义的textview的显示宽度,其中,所述自定义的textview用于显示折行文本;

第二获取模块:用于获取所述折行文本中文字的宽度和高度;

第一计算模块:用于根据所述折行文本中文字的宽度及所述自定义的textview的显示宽度,计算所述自定义的textview每一行最多可显示字数;

第二计算模块:用于根据所述折行文本中文字的高度,计算所述自定义的textview的显示高度;

设置模块:用于根据所述自定义的textview的显示宽度和显示高度,设置所述自定义的textview在父视图中的相对位置;

绘制模块:用于在所述自定义的textview上绘制折行后的显示文本。

结合本发明实施例的第三方面,提供了一种终端设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如本发明实施例第一方面所述方法的步骤。

结合本发明实施例的第四方面,提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现本发明实施例第一方面提供的所述方法的步骤。

结合本发明实施例的第五方面,提供了一种计算机程序产品,所述计算机程序产品包括计算机程序,所述计算机程序被一个或多个处理器执行时实现本发明实施例第一方面提供的所述方法的步骤。

在本发明实施例中,通过自定义原生的textview控件,并自行计算折行文本显示位置,绘制文本,不必调用textview控件中自带的折行实现方法,从而避免因重写带来过于庞杂的代码量,使得可以简单实现文本折行,并能应对多种字体引起的编排混乱,由此可大大提高开发效率。

附图说明

为了更清楚地说明本发明实施例中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。

图1为本发明实施例提供的折行文本实现方法的一个实施例流程图;

图2为本发明实施例提供的折行文本实现方法的另一个实施例流程图;

图3为本发明实施例提供的折行文本实现方法的终端设备的结构示意图;

图4为本发明实施例提供的终端装置的结构示意图。

具体实施方式

本发明实施例提供了一种折行文本实现方法、终端设备及存储介质,用于在前端页面对文本进行折行显示。

为使得本发明的发明目的、特征、优点能够更加的明显和易懂,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,下面所描述的实施例仅仅是本发明一部分实施例,而非全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。

实施例一:

请参阅图1,本发明实施例提供的数据库查询方法的流程示意图,包括以下步骤:

s101、自定义一个textview,并获取自定义的textview的显示宽度,其中,所述自定义的textview用于显示折行文本;

所述textview控件为android系统提供的一种用于文本的ui控件,通过所述textview控件可以实现各种文本显示效果,如图文混排、链接activity等,在本发明实施例中,所述自定义的textview与系统提供textview控件不存在关联,即不是继承或重写textview控件,自定义的textview与系统提供textview控件仅仅只是存在部分功能相同。

通过系统提供的方法,获取自定义的textview的宽度,这里自定义的textview也相当于一个ui控件。

可选的,根据所述自定义的textview的父视图显示宽度及预显示字数,设置所述自定义的textview的显示宽度。在自定义textview时会设置宽度及高度等基本显示参数,这里设置的参考父视图及一行预估显示字数来设置宽度,而设置的高度值一般为一个初始值(或默认值)。

s102、获取所述折行文本中文字的宽度和高度;

所述折行文本中所有文字的字体样式可以不同,但大小应当一致。折行文本的字体样式及大小可以系统默认,也可以由用户自行设定。

s103、根据所述折行文本中文字的宽度及所述自定义的textview的显示宽度,计算所述自定义的textview每一行最多可显示字数;

所述自定义的textview的宽度等于一行折行文本的宽度加上空白部分宽度,一行折行文本的宽度就等于一行文本的字数宽度总和。

当折行后预设行数不能显示所有文本,则在折行后的最后一行最末位置添加链接,所述链接用于在点击后展示所有未显示文本。如折行文本只显示3行,当3行不能显示所有文本,就需要将前3行未能展示的文本隐藏,即添加一个“后文”按钮,就能链接到全文内容,展示未显示部分。

s104、根据所述折行文本中文字的高度,计算所述自定义的textview的显示高度;

所述自定义的textview的显示高度指的是实际绘制折行文本时,该自定义的textview折行的显示高度。所述折行文本中文字的高度即是是文字的行高。当需要展示所有文本时或显示折行后文本时,所述自定义的textview预设显示高度,即初始高度值,一般的,会给所述自定义的textview的设置初始高度(即默认值),再计算实际显示文本时所述自定义的textview的显示高度,并根据实际显示高度修改初始高度值。在本发明实施例中,所述自定义的textview的高度会适应性发生改变,除设定初始高度外,显示部分文本与显示全部文本时所述自定义的textview的高度会进行变化。

所述自定义的textview的显示高度等于空白部分加上文本高度,而文本高度等于行数乘以行高,所述折行文本中文字的高度即是是文字的行高。

s105、根据所述自定义的textview的显示宽度和显示高度,设置所述自定义的textview在父视图中的相对位置;

所述自定义的textview在视图中的位置可以根据其大小来设定,所述相对位置即相对于父视图的位置,相对于父视图自定义的textview位置是固定的。

可选的,所述自定义的textview在父视图中位置也可以根据父视图的布局来确定。

s106、在所述自定义的textview上绘制折行后的显示文本。

所述绘制即调用系统的ondraw方法,折行文字通过绘制使得样式可以灵活变化,可以针对单独的文字进行绘制设定。

可选的,定义一个动态数组,所述数组用于存储所述显示文本中所有文字。将折行文本放入数组,通过遍历数组就能绘制文本内容。

可选的,当点击所述链接,绘制全部显示文本。文本折行后,多余内容会被隐藏,通过链接可以展示全部文本。其中,所述链接可以是按钮等形式。

上述自定义了一个textview,并通过计算每一行字数和自定义的textview高度,设置位置后绘制文本内容,不仅可以通过轻量级文本视图实现文本折行,而且能够灵活控制文本绘制。

实施例二:

在图1的基础上,结合代码,详述折行文本实现过程如下:

图3为本发明实施例提供的折行文本方法的流程示意图,所述步骤并不意味着执行顺序的先后。

自定义一个textview,命名为flexibletextview,flexibletextview的宽度一般有用户设定,也可以由父视图的宽度来设定默认值。在s210中,通过系统的onmeasure方法,就可以取到flexibletextview的宽度值。

根据flexibletextview的宽度,就可以计算在该宽度下,一行文字可容纳的字数。首先,获取折行文本的字体样式及大小,通过paint.measuretext方法可以获取到文本的一个字符串的宽度,而paint.breaktext方法可以根据宽度计算可容纳字符数。对于一行文字,通过paint.breaktext可以得到每一行展示的子字符串,而通过paint.measuretext可以获取设定如“后文”、“获取更多”等文本的宽度。

在s202中,计算一行可容纳字数,主要根据减去空白部分后,文字部分宽度及单个文字宽度计算。

折行处理时,会将折行结果保存到arraylist数组中,该数组不仅可以绘制文本,还可以告知一行绘制字数。直接取出数组中内容调用s205中ondraw方法即可绘制。

本发明实施例还可以针对字体较为特殊的emoji字符,通过判断每一行断开位置,设定文本显示宽度。

在s203中计算flexibletextview高度,根据计算公式就可以得到高度值,如下:flexibletextviewheight=margin+lineheight*linecount;这里margin表示上下空白除高度,lineheight表示行高,linecount表示行数。

上述可以通过fontmetrics获取文本中文字的行高。

获取到flexibletextview高度及宽度,可以通过s204设置其相对于父视图的位置,具体可直接调用onlayout方法设定。

在本发明实施例中,s201与s204无必然顺序关系,既可根据文本显示所需宽度及高度设定flexibletextview宽度及高度,又可结合flexibletextview宽度及高度计算判断文本显示样式。

在s205中,直接调用ondraw方法遍历arraylist数组取出数据绘制。

上述自行定义文字的折行及绘制,可灵活展示各种折行效果,方便易用。

实施例三:

上面主要描述了一种文本折行实现方法,下面将对一种文本折行实现的终端设备进行详细描述。

图3示出了本发明实施例提供的文本折行实现的终端设备的结构示意图,包括:

第一获取模块310:用于自定义一个textview,并获取自定义的textview的显示宽度,其中,所述自定义的textview用于显示折行文本;

可选的,所述第一获取模块包括:

设置单元:用于根据所述自定义的textview的父视图显示宽度及预显示字数,设置所述自定义的textview的显示宽度

第二获取模块320:用于获取所述折行文本中文字的宽度和高度;

第一计算模块330:用于根据所述折行文本中文字的宽度及所述自定义的

textview的显示宽度,计算所述自定义的textview每一行最多可显示字数;

可选的,所述第一计算模块330还包括:

当折行后预设行数不能显示所有文本,则在折行后的最后一行最末位置添加链接,所述链接用于在点击后展示所有未显示文本。

可选的,所述当折行后预设行数不能显示所有文本,则在折行后的最后一行最末位置添加链接还包括:

当点击所述链接,绘制全部显示文本。

第二计算模块340:用于根据所述折行文本中文字的高度,计算所述自定义的textview的显示高度;

设置模块350:用于根据所述自定义的textview的显示宽度和显示高度,设置所述自定义的textview在父视图中的相对位置;

绘制模块360:用于在所述自定义的textview上绘制折行后的显示文本。

可选的,所述绘制模块360还包括:

定义模块:定义一个动态数组,所述数组用于存储所述显示文本中所有文字。

上述的终端设备,通过获取和计算,绘制折行文本,不仅方法简单,而且灵活易用。

实施例四:

图4是本发明一实施例提供的折行文本实现的终端设备的结构示意图。所述终端设备,为具备触摸屏的移动计算机设备,包括但不限于智能手机、智能手表、笔记本、平板电脑、pos机甚至包括车载电脑。如图4所示,该实施例的终端设备4包括:存储器410、处理器420以及系统总线430,所述存储器410包括存储其上的可运行的程序4101,本领域技术人员可以理解,图4中示出的终端设备结构并不构成对终端设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。

下面结合图4对终端设备的各个构成部件进行具体的介绍:

存储器410可用于存储软件程序以及模块,处理器420通过运行存储在存储器410的软件程序以及模块,从而执行终端的各种功能应用以及数据处理。存储器410可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据终端的使用的业务数据(比如直播数据、页面显示数据等)等。此外,存储器410可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。

在存储器410上包含数据库查询方法的可运行程序4101,所述可运行程序4101可以被分割成一个或多个模块/单元,所述一个或多个模块/单元被存储在所述存储器410中,并由处理器420执行,以实现文本折行显示,所述一个或多个模块/单元可以是能够完成特定功能的一系列计算机程序指令段,该指令段用于描述所述计算机程序4101在所述终端设4中的执行过程。例如,所述计算机程序4101可以被分割为第一获取模块、第二获取模块、第一计算模块、第二计算模块、设置模块和绘制模块。

处理器420是终端设备的控制中心,利用各种接口和线路连接整个终端设备的各个部分,通过运行或执行存储在存储器410内的软件程序和/或模块,以及调用存储在存储器410内的数据,执行终端的各种功能和处理数据,从而对终端进行整体监控。可选的,处理器420可包括一个或多个处理单元;优选的,处理器420可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器420中。

系统总线430是用来连接计算机内部各功能部件,可以传送数据信息、地址信息、控制信息,其种类可以是例如pci总线、isa总线、vesa总线等。处理器420的指令通过总线传递至存储器410,存储器410反馈数据给处理器420,系统总线430负责处理器420与存储器410之间的数据、指令交互。当然系统总线430还可以接入其他设备,例如网络接口、显示设备等。

终端设备还可包括至少一种传感器,比如光传感器、运动传感器以及其他传感器,一种输入设备,比如触摸屏、键盘及其他,一种输出设备,比如扬声器、显示器及其他,可选的,在本发明实施例中,输入设备可用于输入指令,如查找要求,输出设备可用于显示查询结果,向用户展示查询数据。其他构成部件在此不再赘述。

在本发明实施例中,该终端所包括的处理器420执行的可运行程序具体为:

一种折行文本实现方法,包括:

自定义一个textview,并获取自定义的textview的显示宽度,其中,所述自定义的textview用于显示折行文本;

获取所述折行文本中文字的宽度和高度;

根据所述折行文本中文字的宽度及所述自定义的textview的显示宽度,计算所述自定义的textview每一行最多可显示字数;

根据所述折行文本中文字的高度,计算所述自定义的textview的显示高度;

根据所述自定义的textview的显示宽度和显示高度,设置所述自定义的textview在父视图中的相对位置;

在所述自定义的textview上绘制折行后的显示文本。

进一步的,所述自定义一个textview,并获取自定义的textview的显示宽度之前还包括:

根据所述自定义的textview的父视图显示宽度及预显示字数,设置所述自定义的textview的显示宽度。

进一步的,所述根据所述折行文本中文字的宽度及所述自定义的textview的显示宽度,计算所述自定义的textview每一行最多可显示字数还包括:

当折行后预设行数不能显示所有文本,则在折行后的最后一行最末位置添加链接,所述链接用于在点击后展示所有未显示文本。

进一步的,所述在所述自定义的textview上绘制折行后的显示文本之前还包括:

定义一个动态数组,所述数组用于存储所述显示文本中所有文字。

进一步的,所述当折行后预设行数不能显示所有文本,则在折行后的最后一行最末位置添加链接还包括:

当点击所述链接,绘制全部显示文本。

所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述或记载的部分,可以参见其它实施例的相关描述。

本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各实施例的模块、单元和/或方法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。

在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。

以上所述,以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1