我正在尝试将@string/string_b
置于html <p></p>
中。例如,
<string name="string_a">very long text</string>
<string name="string_b">
<![CDATA[
<body>
<p>This is string B</p>
<p>@string/string_a</p>
<p>Another string here</p>
</body>
]]>
</string>
这只会显示:
这是字符串B
@字符串/ string_a
这里有另一个字符串
但我想表明:
这是字符串B
很长的文字。
这里有另一个字符串
顺便说一下,它会显示在HtmlTextView中。如果可以的话,我只想在xml中创建它。谢谢你们!
答案 0 :(得分:1)
在strings.xml
:
<string name="string_b">
<![CDATA[
<body>
<p>This is string B</p>
<p>%1$s</p>
<p>Another string here</p>
</body>
]]>
</string>
现在,您可以使用Java代码执行此操作:
Resources res = getResources();
String string_a = res.getString(R.string.string_a);
String string_b = String.format(res.getString(R.string.string_b), string_a);
根据您的要求仅在xml中执行此操作,我发现此question指的是相同的内容。所以你可以看看那里给出的答案,看看它是否适合你。
答案 1 :(得分:0)
这是我的答案。希望它能帮到别人。扩展HtmlTextView
使我们有机会添加string
格式的新属性。然后,android:text
和custom:text2
可以在自定义HtmlTextView
内以编程方式连接。
<强> 1。扩展HtmlTextView 如果您正在使用它,请使用TextView。
public class HtmlTextview extends HtmlTextView {
public HtmlTextview(Context context) {
super(context);
}
public HtmlTextview(Context context, AttributeSet attrs) {
super(context, attrs);
setupText(attrs);
}
public HtmlTextview(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
setupText(attrs);
}
private void setupText(AttributeSet attrs) {
String htmlString = (String) this.getText();
String text2;
TypedArray attributeValuesArray = getContext().obtainStyledAttributes(attrs, R.styleable.concatenate, 0, 0);
try{
text2 = attributeValuesArray.getString(R.styleable.concatenate_text2);
} finally {
attributeValuesArray.recycle();
}
if(text2 != null && text2.length() > 0){
htmlString = htmlString + text2;
this.setHtmlFromString(htmlString, new HtmlTextView.RemoteImageGetter());
}
}
}
<强> 2。 HtmlTextview属性
<?xml version="1.0" encoding="utf-8"?>
<resources>
<declare-styleable name="concatenate">
<attr name="text2" format="string"/>
</declare-styleable>
</resources>
第3。在string.xml资源中
<resources>
<string name="app_name">HtmlTry</string>
<string name="string_a">
<![CDATA[
<body>
<p>very long text. Can also formatted in <font color="#f44336">Html.</font></p>
</body>
]]>
</string>
<string name="string_b">
<![CDATA[
<body>
<p>This is string B</p>
</body>
]]>
</string>
</resources>
<强> 4。最后在xml布局中应用它。
<com.htmltry.HtmlTextview
android:id="@+id/tv"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/string_b"
custom:text2="@string/string_a"
/>