Corona中文站

强大、易学的跨平台(iOS/Android)开发框架。QQ群1:74390406(满) 群2:221929599

导航

关于中文排版(自动换行等)

办法有很多种,先一一罗列:

1)使用native.showWebPopup(),用浏览器来打开。

这种办法,排版灵活,而且可以使用富文本,显示效果丰富多样。缺点是需要临时创建html文件,使用起来有点不方便。

2)使用native.newTextBox()

这个办法排版,使用比较简单,排版效果好,但是因为corona所有的本地UI控件都是始终显示在display Object之上的,无法加入到group中进行管理,所以需要单独进行控制,有点麻烦。而且在android下,超出控件高度之后会无法通过滑动来显示。

3)自己计算文字宽度,切割字符串

这个办法比较灵活,你可能会用到以下几个函数。

--求字符串长度,中文字符算长度2
function wlen( s )
        local len,k=0,1
        while k<=#s do
                len=len+1
                if string.byte(s,k)<=190 then k=k+1 else k=k+2 end
        end
        return len
end
 
--按指定长度切分字符串,中文字符算2
function cut(str, len)
    local t = {}
    local ut = ustring(str)
    local lastIndex = 1
    local function getStr(len)
        local ret = ""
        local l = 0
        while true do
            local char = ut[lastIndex]
            ret = ret .. char
            if string.byte(char) <= 127 then
                l = l + 1
            else
                l = l + 2
            end
            lastIndex = lastIndex + 1
            if l >= len then break end
        end
        return ret, l
    end
   
    local slen = wlen(str)
    --print(slen)
    local leftCount = slen
    local i = 0
    while leftCount > 0 do
        local j = 0
        if leftCount >= len then
            j = len
        else
            j = leftCount
        end
        local s, usedcount = getStr(j)
        t[#t + 1] = s
        leftCount = leftCount - usedcount
        --print(s, usedcount, leftCount)
        i = i + 1
    end
   
    return t
end
 
使用示例:
local t = cut("天下风云出我辈,一如江湖岁月催", 14)
=>>
天下风云出我辈
,一如江湖岁月
<< 关于InMobi每周之星【2011.8.21】 - The Patriots >>

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

最近发表

Powered By Z-Blog 1.8 Walle Build 100427 Copyright 2011-2015 BuildApp.Net. All Rights Reserved.