`
yunzhongxia
  • 浏览: 647314 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

字符串所占实际宽度

    博客分类:
  • flex
阅读更多

        在很多自定义的组件中需要动态的计算字符串的实际宽度,如果字符串都是汉字那么可以利用String.length*汉字大小,但是在实际的应用中中英文相结合是很常见的事情。

        案例如下:

       

<mx:TileList width="100%" height="100%" dataProvider="{chArr}" borderStyle="none" id="tl" columnWidth="100" >
	    <mx:itemRenderer>
	    	<mx:Component>
	    		<mx:HBox horizontalAlign="left">
	    			<mx:CheckBox selected="{data.select}" click="data.select=!data.select" label="{data.key}"/>
	    		</mx:HBox>
	    	</mx:Component>
	    </mx:itemRenderer>
	</mx:TileList>

 

   TileList 的数据源是动态的,因此每行显示的列数也是动态的,这就需要动态的计算columnWidth,

   columnWidth=字符串所占最大实际宽度+其他组件的宽度。

   笔者第一次计算的时候就犯了一个错误,首先计算出字符串所占得字节数,一个汉字占2个字节,然后总的字节数*字体大小。

   计算一个字符串所占的字节数长度如下:

  

                                                  /**
			 * 计算出双字节字符的长度
			 * 得到一个字符串的长度 一个汉字占2个字节 
			 * @param  sChars 字符串
			 * @return 字符串所占的长度
			 */
			private function getStrActualLen(sChars:String):int{   
     			return sChars.replace(/[^\x00-\xff]/g,"xx").length;   
 			} 

 

    以上算法如果都是汉字不会出现问题,如果都是英文就会出现字符串所占实际宽度大大小于columnWidth。

   

    经过自己的一番研究,可以从flex的as3帮助文档中找到答案,flash.text.TextLineMetrics类负责测量字符串所占的实际宽度。

 

  

 

 

有关详细信息请自己参考API.

measureText(字符串)方法返回TextLineMetrics的实例,TextLineMetrics类的width返回字符串所占的实际宽度,Flex的显示组件一般都继承自UIComponent组件,UIComponent类含有measureText方法,因此可以直接使用this.measureText(字符串).

 

 

var maxStrLength:int=0;//最大宽度
				for(var i:int=0;i<ac.length;i++){
					var item:Object=ac.getItemAt(i);
					item.name= item[param.name];
					var objLen:int=this.measureText(item.name).width;
				    if(objLen>maxStrLength){
						maxStrLength=objLen;
					}
					if(isFirst){
						item.sel=false;
					}
					ac.setItemAt(item,i);
				}

 

 

  • 大小: 44.7 KB
4
0
分享到:
评论

相关推荐

    Node.js-string-width-得到字符串的视觉宽度显示所需的列数

    标题"Node.js-string-width-得到字符串的视觉宽度显示所需的列数"表明这个库主要关注的是如何在Node.js环境中确定字符串在终端显示时的宽度。这涉及到字符编码的理解,因为不同的字符可能占用不同的空间。例如,英文...

    数字转换为字符串

    ### 数字转换为字符串 #### 概述 在编程领域,数据类型的转换是十分常见的操作。特别是当需要将数字(整数、浮点数等)转换为字符串时,这一过程对于构建用户界面、生成报告或是进行网络通信尤为重要。C语言中的`...

    js字符串操作大全

    - 可以通过遍历字符串中的每个字符,并根据字符类型(如中文、英文等)来计算其在显示时所占的宽度。 - 需要注意的是,不同字体和字号下字符的宽度可能会有所不同。 **实现思路**: ```javascript String.prototype...

    易语言源码获取字符串尺寸.7z

    这个数值不包括结束符,对于ASCII编码的字符串,一般每个字符占一个字节。 2. **字符串宽度**:字符串宽度则与字体、字号和字符编码有关。在易语言中,如果需要计算字符串在屏幕上的宽度,通常需要调用GUI相关的...

    js中英文混合的字符串换行

    3. **换行处理**:对于每一个遍历到的字符,根据其类型计算其所占的宽度,并累加到总宽度中。当总宽度达到预设值时,添加换行符。 #### 三、代码实现 下面是具体的代码实现示例: ```javascript // 示例字符串 ...

    格C/C++语言式化字符串

    在实际应用中,例如从串口接收单片机发送的16进制数据时,可以使用`sprintf`函数将接收到的字节转化为16进制字符串,如示例所示。这通过在循环中使用`%02x`格式化规定符,确保每个字节都以两位的十六进制数形式输出...

    蛤蟆PYTHON脚本学习笔记六字符串.pdf

    - 根据输入的宽度计算每个项目名称和价格所占的宽度。 - 使用格式化字符串来格式化和打印列表中的每一项。 以上知识点涉及了Python字符串操作的基本方法和高级特性,对于学习和使用Python进行数据处理和文本操作...

    c#获取字符串宽度的示例代码(字节数方法)

    需要注意的是,这个方法仅适用于基于字节的宽度计算,实际应用中,你可能还需要结合特定字体的字宽信息来更准确地计算字符串宽度。例如,你可以使用GDI+或者WPF中的`Graphics`类来测量字符串的尺寸。在这些图形库中...

    python实现指定字符串补全空格的方法

    为了使得字符串在显示时能够保持一定的格式或者达到特定的宽度,Python提供了多种字符串格式化的方法,其中`rjust()`、`ljust()`和`center()`就是用来控制字符串对齐方式并填充空白字符的方法。 #### 一、rjust() ...

    前后台实现精确截取指定长度字符串(考虑全角半角)

    如果计算的实际宽度超过目标长度,则适当减少截取的字符数量,确保最终截取的字符串不会出现乱码或不完整的情况。 ### 三、代码示例解析 #### 1. `InterceptString` 方法 该方法实现了上述逻辑的核心部分,具体...

    python字符串思维导图(基本全覆盖)

    + width:指定输出数据时所占的宽度。 + precision:如果后面存在 type 参数,则指的是保留小数的位数,如果 type 参数不存在,则是指有效数字的位数。 + type:指定输出数据的具体类型。 实例 * 使用数字占位...

    PHP程序设计-3期(KC016) 2.8.1字符串长度 拓展知识.doc

    在示例中,`mb_strlen($zhStr,'UTF-8')`将返回字符串 `$zhStr` 中的实际字符数,无论这些字符是英文还是中文,这使得它在处理包含中文字符的字符串时非常有用。 接下来,我们来看一个混合中英文字符串的例子。`$str...

    PHP UTF-8 等宽度截取中英文字符.txt

    示例代码中定义了`u8_title_substr`函数,通过循环遍历字符串中的每个字符,根据字符的编码类型(1、2、3或4字节)累加相应的权重值,最终实现了等宽度截取UTF-8编码的中英文字符的功能。 #### 五、注意事项 - 在...

    DELPHI中Format函数详解

    同时,`[width]`可以用来控制输出的字段宽度,如`%6s`会让字符串至少占6个字符的宽度。如果`width`超过了实际字符串的长度,多余的空格会被填充;如果字符串长度超过`width`,则会按原样输出。 Format函数还支持`....

    模块2Python语言基础.pptx

    * 用 %ws 输出一个字符串,w 是宽度值,如 w&gt;0 则右对齐,w则左对齐,如 w 的宽度小于实际字符串占的位数,则按实际宽度输出。 这些知识点涵盖了 Python 语言基础中的基本输入输出、基本数据类型和格式化输出等...

    PHP HTML代码串 截取实现代码

    此外,与英文字符相比,中文字符和全角符号在显示时所占的空间不同,因此截取时需要按照字符的实际显示宽度来计算。 ### HTML代码串的特殊性 在处理HTML代码串时,需要特别注意HTML标签的存在。截取时不仅要保留...

    改变el-table宽度

    在实际应用中,为了保证`localStorage`中的数据格式正确,我们还需要在`getTableColWidth`方法中解析存储的数据,可能需要处理JSON字符串,确保数组格式正确。同时,我们也需要考虑到数据安全和兼容性问题,例如,当...

    mbswidth.rar_The Number

    因此,计算字符串宽度时,我们不能简单地以字节为单位,而需要识别每个字符的实际宽度。 计算屏幕列数的过程一般涉及以下几个步骤: 1. **字节解码**:遍历字符串,根据编码规则将字节序列转换为字符。 2. **宽...

    Flex正则表达式判断中文或全角字符代码

    因此,在处理包含这类字符的字符串时,我们需要采用不同的方式来计算字符串的实际长度。 #### 二、使用正则表达式判断中文和全角字符 在Flex中,可以通过正则表达式来检测字符串中是否包含中文或全角字符。正则...

    Python计算字符宽度的方法

    在Python中,`len()` 函数只能提供字符串中的字符数量,而不能直接给出这些字符所占的实际宽度。这是因为不同的字符在屏幕上显示时所占的空间是不一样的。比如中文字符通常占据两个英文字符的位置。因此,我们需要一...

Global site tag (gtag.js) - Google Analytics