一种解决Textview控件自动换行问题的方法和装置制造方法及图纸

技术编号:27561800 阅读:28 留言:0更新日期:2021-03-09 22:04
本申请公开了一种解决Textview控件自动换行问题的方法,该方法包括:获取Textview控件的宽度,并测量需要显示的文本的总宽度;计算需要显示的文本的总宽度和Textview控件的宽度的商,判断显示所述文本所需要的行数;在每一行绘制的字符都排满的原则下,按照从左到右或者从右到左的顺序,单独绘制每一行的文本。本申请还公开了一种对应的装置。应用本申请公开的技术方案,能够解决Textview控件在没排满一行就自动换行的问题。排满一行就自动换行的问题。排满一行就自动换行的问题。

【技术实现步骤摘要】
一种解决Textview控件自动换行问题的方法和装置


[0001]本申请涉及安卓界面开发
,特别涉及一种解决Textview控件自动换行问题的方法和装置。

技术介绍

[0002]安卓界面开发中一个最常用的基础控件就是Textview,Textview主要用于承担文本显示的任务,几乎所有App中都不可避免地会使用该控件。
[0003]一款应用程序(App)的界面显示是否友好,会让用户对这款App产生一种最直观的感受,也就直接关系到用户是否继续愿意使用这款应用程序,而Textview作为被使用最频繁的控件之一,所承担的重要性也就不言而喻。因此,能够最合理地使用该控件达到一种最友好的显示效果是非常重要的。
[0004]目前,安卓原生提供的Textview存在一个问题就是:在多行文本显示中,文本包含中英文或者标点符号,Textview可能会出现文本并未排满一行就自动换行的情况。这个问题目前并没有特别完善的解决方案,只是有一些针对某一些显示场景下的特殊处理方法。例如,将Textview中文本的字符全角化,去除特殊字符或将所有中文标号替换为英文标号,但是这些方法都不能很好地解决上述问题。
[0005]Textview在多行文本显示中的问题主要包括:
[0006](1)TextView在显示中文的时候,标点符号不能显示在一行的行首和行尾。如果一个标点符号刚好在一行的行尾,该标点符号就会连同该标点符号的前一个字符被换行到下一行进行显示,从而导致上一行未排满就自动换行。
[0007](2)TextView显示英文单词的时候,单词不能被隔断显示在不同的两行中。如果某一行剩余的空间不够,不足以显示完该行中最后一个英文单词,那么,该英文单词将被换行到下一行进行显示,这将导致上一行未排满就自动换行,而上一行的后半部分将存在一块空白。
[0008](3)TextView显示中文、数字、英文的混合型文本的时候,存在前后字符类型不同而自动换行的问题。
[0009]存在问题的原因是由于安卓系统原生的Textview控件对不同语言的字符处理存在技术缺陷。
[0010]为解决上述技术缺陷,需要支持中文、英文、其他小语种、以及特殊标点符号等显示都符合预期的排列,每一行都从左到右尽可能排满。

技术实现思路

[0011]本申请提供了一种解决Textview控件自动换行问题的方法和装置,以使屏幕上能够显示的字符数量更多。
[0012]本申请公开了一种解决Textview控件自动换行问题的方法,包括:
[0013]获取Textview控件的宽度,并测量需要显示的文本的总宽度;
[0014]计算需要显示的文本的总宽度和Textview控件的宽度的商,判断显示所述文本所需要的行数;
[0015]在每一行绘制的字符都排满的原则下,按照从左到右或者从右到左的顺序,单独绘制每一行的文本。
[0016]较佳的,该方法还包括:
[0017]如果显示所述文本所需要的行数大于所述Textview空间的总行数,则在选定的位置插入省略号,对所述文本中的部分内容进行省略。
[0018]较佳的,通过子类继承父类,然后重写onDraw函数的方法来对字符的显示进行控制,实现所述绘制。
[0019]本申请还公开了一种解决Textview控件自动换行问题的装置,包括:宽度获取模块、判断模块和绘制模块,其中:
[0020]所述宽度获取模块,用于获取Textview控件的宽度,并测量需要显示的文本的总宽度;
[0021]所述判断模块,用于计算需要显示的文本的总宽度和Textview控件的宽度的商,判断显示所述文本所需要的行数;
[0022]所述绘制模块,用于在每一行绘制的字符都排满的原则下,按照从左到右或者从右到左的顺序,单独绘制每一行的文本。
[0023]较佳的,所述绘制模块还用于:
[0024]在显示所述文本所需要的行数大于所述Textview空间的总行数时,在选定的位置插入省略号,对所述文本中的部分内容进行省略。
[0025]较佳的,所述绘制模块,用于通过子类继承父类,然后重写onDraw函数的方法来对字符的显示进行控制,实现所述绘制。
[0026]由上述技术方案可见,本申请通过获取Textview控件的宽度,并测量需要显示的文本的总宽度,然后计算需要显示的文本的总宽度和Textview控件的宽度的商,判断显示所述文本所需要的行数;最后,在每一行绘制的字符都排满的原则下,按照从左到右或者从右到左的顺序,单独绘制每一行的文本,从而解决了Textview控件在没排满一行的情况下自动换行的问题,使得每一行都尽可能排满,从而使得屏幕上能够显示的字符数量更多。对于小屏幕的专网终端而言,由于界面显示区域有限,本专利技术所提供的方案能够很好地提升小屏幕终端的使用体验。
附图说明
[0027]图1为本专利技术解决Textview控件自动换行问题的方法流程示意图;
[0028]图2为本专利技术解决Textview控件自动换行问题的装置的组成结构示意图;
[0029]图3为本专利技术实施例的实施流程示意图;
[0030]图4为采用原生Textview控件显示英文字符串所呈现的效果示意图;
[0031]图5为使用本专利技术方案显示英文字符串所呈现的效果示意图;
[0032]图6为采用原生Textview控件显示中文+英文字符串所呈现的效果示意图;
[0033]图7为使用本专利技术方案显示中文+英文字符串所呈现的效果示意图;
[0034]图8为使用本专利技术方案处理超出2行的字符串所呈现的效果示意图。
具体实施方式
[0035]为使本申请的目的、技术方案及优点更加清楚明白,以下参照附图并举实施例,对本申请作进一步详细说明。
[0036]为解决现有技术所存在的问题,本专利技术提出一种解决Textview控件自动换行问题的方法,如图1所示,该方法包括以下步骤:
[0037]步骤101:获取Textview控件的宽度,并测量需要显示的文本的总宽度。
[0038]步骤102:计算需要显示的文本的总宽度和Textview控件的宽度的商(即:两者之间的倍数关系),以此判断显示该文本所需要的行数。
[0039]步骤103:在每一行绘制的字符都排满的原则下,按照从左到右或者从右到左的顺序,单独绘制每一行的文本。
[0040]在图1所示方法的基础上,如果显示该文本所需要的行数大于Textview控件的总行数,也就是说填满Textview控件的所有行都无法显示完全该文本,则根据情况在合适的位置插入省略号,对部分文本进行省略。
[0041]本专利技术提供的上述技术方案不仅能够满足多种不同类型字符对显示的特殊要求,而且能够满足友好性的界面显示。
[0042]由于安卓系统原生的Textview控件显示文本的本质方法是通过调用onDraw函数来实现的,基于此,本专利技术提出本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种解决Textview控件自动换行问题的方法,其特征在于,包括:获取Textview控件的宽度,并测量需要显示的文本的总宽度;计算需要显示的文本的总宽度和Textview控件的宽度的商,判断显示所述文本所需要的行数;在每一行绘制的字符都排满的原则下,按照从左到右或者从右到左的顺序,单独绘制每一行的文本。2.根据权利要求1所述的方法,其特征在于,该方法还包括:如果显示所述文本所需要的行数大于所述Textview空间的总行数,则在选定的位置插入省略号,对所述文本中的部分内容进行省略。3.根据权利要求1或2所述的方法,其特征在于:通过子类继承父类,然后重写onDraw函数的方法来对字符的显示进行控制,实现所述绘制。4.一种解决Textview控件自动换行问题的装置,其特征在于,包...

【专利技术属性】
技术研发人员:黄俊
申请(专利权)人:成都鼎桥通信技术有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1