0

请看下面的代码

字符串.xml

<string name="measurements_description"><html><font color="#FFFAF0">I want to have white color for the whole text. 
    <br/>This text comes in a new line<font color="red">This text is red </font>
    <br/>This is another line. Again, color is white </font></html></string>

male_layout.xml

<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >
    
    <RelativeLayout 
        android:layout_width="wrap_content"
        android:layout_height="wrap_content">
    
        <TextView 
            android:id="@+id/measurementsDescription"
            android:text="@string/measurements_description"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
        />
    </RelativeLayout>
</ScrollView>

Form.java(这个属于主布局activity_form)

public boolean onMenuItemSelected(int id, MenuItem item) {
    //Toast.makeText(this, item.getTitle(), Toast.LENGTH_LONG).show();
    
    TextView msg = new TextView(this);
    msg.setText("<html><u>Message</u></html>");
        
    AlertDialog.Builder alertBuilder = new AlertDialog.Builder(this);
    //alertBuilder.setMessage("<html><u>Message</u></html>");
    alertBuilder.setTitle("Male Measurement Instructions");
    LayoutInflater li = getLayoutInflater();
    View v = li.inflate(R.layout.male_layout, null);
        
    alertBuilder.setView(v);
    alertBuilder.setCancelable(false);
    alertBuilder.setPositiveButton("OK", new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface arg0, int arg1) {
             //alertBuilder.finish();
        }
    });
        
    AlertDialog alertDialog = alertBuilder.create();
    alertDialog.show();
        
    return true;
}

这就是它的显示方式,而不响应 string.xml 文件中的任何 HTML。为什么这没有改变它在 HTML 中编码的颜色?为什么它不保持 HTML 中编码的换行符?

在此处输入图像描述

如何解决这个问题?请帮忙!

4

3 回答 3

3

第一个问题是嵌套的<font>. <font>如果你有另一个,它就行不通了<font>。您可以将android:textColor属性设置为#FFFFFF,然后使用<font>可以更改某些文本的颜色。其次,您必须CDATA在您的字符串中使用,第三您必须设置TextViewfrom 代码的文本,以便您可以使用 html 格式化字符串。所以你必须有

male_layout.xml

...
<TextView 
    android:id="@+id/measurementsDescription"

    android:textColor="#FFFFFF"

    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
/>
...

字符串.xml

<string name="measurements_description">
<![CDATA[
    I want to have white color for the whole text. 
    <br/>This text comes in a new line <font color="red">This text is red </font>
    <br/>This is another line. Again, color is white
]]>    
</string>

表单.java

...
String html = getString(R.string.measurements_description);
TextView tv = (TextView) findViewById(R.id.measurementsDescription);
tv.setText(Html.fromHtml(html));
...
于 2013-02-04T08:17:39.257 回答
1

您可以通过在strings.xml中声明一个字符串来使用HTML 格式 + 格式字符串

<string name="key">
    <![CDATA[
    My text and tags <b>with or without</b> variables<br/><br/>
    Answer is <u>%1$s</u>
    ]]>
</string>

并创建您的对话框:

String msg = String.format(getResources().getString(R.string.key), "42");
Spanned htmlMsg = Html.fromHtml(msg);
builder.setMessage(htmlMsg).show();
于 2014-11-04T12:11:00.140 回答
1

Android文档说. _ <b>_ <i>_<u>TextView

如果你想显示不同颜色的单词,你应该使用SpannableString

这里有一个完整的例子。

希望能帮助到你。

编辑:

其他方法:

String text = "<font color=#cc0029>Erste Farbe</font> <font color=#ffcc00>zweite Farbe</font>";
yourtextview.setText(Html.fromHtml(text));
于 2013-02-04T08:19:50.953 回答