如何在html段落中添加@string?

时间:2016-06-08 19:46:57

标签: android html textview

我正在尝试将@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中创建它。谢谢你们!

2 个答案:

答案 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:textcustom: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"
/>

,最终结果是: enter image description here