我的strings.xml文件中有一个字符串,例如
<string name="my_text">Hello <b>$%1$s</b>, android is cool <b>bold me</b></string>
检索带有粗体样式的文本的唯一方法是使用
resources.getText(R.string.my_text);
尽管问题是getText不会为我希望提供的参数提供其他参数,例如带有参数的getString方法,例如
resources.getString(R.string.my_text, "I WILL BE BOLDED")
如果我使用getString,我会失去粗体,如果我使用getText,我将无法传递参数,我该如何获取两者?
答案 0 :(得分:3)
您可以实现以下目标
String myText = resources.getString(R.string.my_text, "I WILL BE BOLDED");
textView.setText(Html.fromHtml(text));
答案 1 :(得分:1)
strings.xml
<string name="my_text">Hello <b>$%1$s </b>, android is cool <b>bold me </b></string>
代码
String.format(res.getString(R.my_text.welcome_messages), "I WILL BE BOLDED");
答案 2 :(得分:0)
您可以创建一个使用字符串键和格式设置类型的帮助程序方法,然后返回适当的字符串。像这样:
<resources>
<string name="text_normal">Hello World</string>
<string name="text_bold"><b>Hello World</b></string>
</resources>
public String getFormattedString(int key, int type) {
String packageName = getPackageName();
String resource = key + "_" + type;
int resourceId = getResources().getIdentifier(resource, "string", packageName);
return getString(resourceId);
}
// now use the helper method
getFormattedString("text", "bold");
答案 3 :(得分:0)
要扩展Sagar的答案,请使用CDATA
设置字符串资源:
<string name="test"><![CDATA[When no one was looking, Lex Luthor took <b>%s</b> cakes. He took %d cakes. That\'s as many as %s %s. And that\'s terrible.]]></string>
然后,使用getString()
检索字符串资源,并使用HtmlCompat
处理格式:
HtmlCompat.fromHtml(getString(R.string.test, "forty", 40, "four", "tens"), HtmlCompat.FROM_HTML_MODE_COMPACT)
注意:答案的作者既不能确认也不能否认在创建此答案时消耗了一些蛋糕。但是,据您所知,没有涉及到实际的超级小动物。