【发布时间】:2010-02-11 11:54:25
【问题描述】:
我正在尝试制作一个内置本地化的应用程序,但我想要一种可以在文本中创建 Web 链接的方法,该 URL 在其他地方定义(为了便于维护)。
所以,我在 res/values/strings.xml 中有我的链接:
<?xml version="1.0" encoding="utf-8"?>
<resources>
...
<string name="link1">http://some.link.com</string>
<string name="link2">http://some.link2.com</string>
</resources>
以及我在 res/values-en-rGB/strings.xml 中的本地化文本
<?xml version="1.0" encoding="utf-8"?>
<resources>
...
<string name="sampleText">Sample text\nMore text and link1\nMore text and link2.</string>
</resources>
我还没有测试过这个位,但是从localization section of developer.android.com 中可以看出,这种减少内容重复的方法应该可以工作,尽管我不确定我应该把意大利语放在哪个文件夹中。它会在“res/values-it-rIT/strings.xml”中吗?假设我也有各种其他语言。
我正在寻找一种方法来获取基本本地化的“sampleText”并插入我的 html 链接,并在点击时让它们工作。到目前为止,我已经尝试了两种方法:
1,
在 'sampleText' (%s) 中设置一些格式:
<string name="sampleText">Sample text\nMore text and <a href="%s">link1</a>\nMore text and <a href="%s">link2</a>.</string>
然后像这样处理文本:
TextView tv = (TextView) findViewById(R.id.textHolder);
tv.setText(getResources().getString(R.string.sampleText, getResources().getString(R.string.link1), getResources().getString(R.string.link2)));
但是当我点击链接时这不起作用,即使链接文本被放入正确的位置。
2,我尝试使用 Linkify,但正则表达式路线可能很困难,因为我正在考虑支持基于非拉丁语的语言。我尝试在链接文本周围放置一个自定义 xml 标记,然后执行以下操作:
Pattern wordMatcher = Pattern.compile("<span1>.*</span1>");
String viewURL = "content://" + getResources().getString(R.string.someLink);
Linkify.addLinks(tv, wordMatcher , viewURL );
但这也没有用。
那么,我想知道是否有一种方法可以将多个 URL 动态添加到将链接到 Web 内容的同一文本的不同部分?
【问题讨论】:
-
也许您可以将@dule 的答案标记为正确答案:)
标签: android text dynamic localization hyperlink