android textview 支持html标签,Android TextView 支持的HTML标签

微生嘉祥
2023-12-01

前段时间,因工作需要,本地化了一个英文版本的产品。

在网上查阅了若干资料,在此进行一个简单的整理。

在MFC程序中,实现多国语言的方式很多,我们选择的是使用配置文件的方法。

在通过配置文件方式实现多国语言功能时,主要的工作是:

1、将需要在界面上显示的文字保存到文件中。

2、在使用这些资源时,不是从rc文件中获取,而是从文件中加载,动态显示。

在配置文件中,需要保存各个资源的ID、各语言版本字符串的值。需要某个资源时,通过其ID查找到资源所在节点,获取相应语言的字符串值。

有一个问题是需要考虑的,资源的ID都是UINT类型的,如果在配置文件中以UINT类型的数值作为节点的ID,标识一个资源的话,不容易维护。

为解决这个问题,

我们可以借鉴.h文件中的做法。在.h文件中,为了易于维护,为每个UINT类型的ID都定义了相应的宏,例如:#define

IDS_DATA

1001,而在rc文件中对该资源的定义为:IDS_DATA

"Data"。这样,在程序中使用时只用IDS_DATA来代表"Data"。

在配置文件中,可以借鉴此做法。用一个XML文件来定义IDS_DATA与1001的对应关系;用另外一个文件来定义IDS_DATA与"Data"的对应关系。而维护资源的内容时,只需要修改资源内容的XML文件。

MFC程序中,主要有三种资源:Menu、Dialog、String。要根据每种资源的特点,来设计相应的方式保存这些资源的文字内容,便于根据资源ID获取相应的文字内容。

可以为每种资源封装一个公共方法,动态显示该资源的文本内容。

Menu

对Menu类的资源,可以封装一个公共函数,遍历Menu中的所有Item,为每个Item设置显示的文字。

如何从配置文件中获取Menu Item相应的字符串呢?需要根据配置文件的结构封装相应的方法。

在遍历菜单,设置各菜单项文字内容的过程中,需要的主要方法如下。

对于Popup Menu,设置Menu Text的方法:

ModifyMenu(hMenu, i, MF_BYPOSITION, i, menuStr);

对于String Menu,设置Menu Text的方法:

ModifyMenu(hMenu, nMenuID, MF_BYCOMMAND, nMenuID,

menuStr);

获取菜单子菜单的方法:

HMENU hSubMenu = GetSubMenu(hMenu,i);

Dialog

对于Dialog类的资源,可以封装一个公共函数,遍历Dialog内的所有控件,为每个控件设置显示的文字内容。当然,还要设置Dialog的标题。

获取各控件字符串的方法需要根据Dialog资源配置文件的组织方式来订。

遍历Dialog,设置各控件文字内容时,需要用到的主要方法如下。

设置Dialog标题的方法:

::SetWindowText(hWnd,caption);

获取Dialog第一个子控件的方法:

HWND hSubWnd = GetWindow(hWnd,GW_CHILD);

获取Dialog子控件下一个控件的方法:

hSubWnd = GetWindow(hSubWnd,GW_HWNDNEXT);

利用以上两个方法,可以遍历Dialog中的所有控件。

判断子控件是否为Window的方法:

::IsWindow(hSubWnd)

通过以上判断,可以获知遍历是否完成。

String

对于String类的资源,配置文件结构很简单,只需要保存资源ID和各个语言版本对应的字符串值即可。

可以封装一个公共方法,根据ID从配置文件中获取字符串的值。

使用字符串资源的方式很多,例如:错误提示信息、Status

Bar显示信息、ToolTip等等。主要的是,根据各种使用场合,如何修改相关代码,改为利用公共方法,从配置文件中读取字符串资源。

原文:http://www.cnblogs.com/tianjian/p/3557968.html

 类似资料: