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>other の中にあると機能しません<font>android:textColor属性を に設定してから#FFFFFF、 で<font>テキストの色を変更できます。2 つ目は文字列で使用する必要がCDATAあり、3 つ目は from コードのテキストを設定してTextView、文字列を 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 に答える