请查看以下代码
的strings.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编码保留换行符?
如何解决这个问题?请帮忙!
答案 0 :(得分:3)
第一个问题是嵌套<font>
。如果您在其他<font>
内有<font>
,则无效。您可以将android:textColor
属性设置为#FFFFFF
,然后使用<font>
更改某些文字的颜色。其次,你必须在你的字符串中使用CDATA
,第三,你必须从代码中设置TextView
的文本,这样你就可以用html格式化字符串。所以你必须
<强> male_layout.xml 强>
...
<TextView
android:id="@+id/measurementsDescription"
android:textColor="#FFFFFF"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
...
<强>的strings.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>
<强> Form.java 强>
...
String html = getString(R.string.measurements_description);
TextView tv = (TextView) findViewById(R.id.measurementsDescription);
tv.setText(Html.fromHtml(html));
...
答案 1 :(得分:1)
Android Documentation表示<b>
仅支持少数HTML代码(包括<i>
,<u>
,TextView
)。
如果您想要显示不同颜色的单词,请使用SpannableString
完整示例here。
希望它有所帮助。
修改强>
其他方法:
String text = "<font color=#cc0029>Erste Farbe</font> <font color=#ffcc00>zweite Farbe</font>";
yourtextview.setText(Html.fromHtml(text));
答案 2 :(得分:0)
您可以使用 HTML格式字符串,在 strings.xml 中声明字符串:
<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();