String in xml mit html-style wird nicht formatiert

  • Hallo liebe Leute,


    Ich spiele ein bisschen mit Android-Tabelts herum und steh vor folgendem Problem:
    in einer xml-Datei habe ich eine String-Variable, welche mit HTML formatiert wird:

    Code
    <string name="sd1">This is a <b>bold</b>, <i>italic</i>, <u>underlined</u>text</string>


    Wenn ich die String-Variable in einer TextView über das Layout-xml anzeigen lasse funktioniert das:

    Code
    <TextView android1:layout_width="wrap_content" android1:id="@+id/sd1" android1:layout_height="wrap_content" android1:text="@string/sd1"></TextView>


    Wenn ich es allerdings wie in der SDK-Doku mache (doku), dann ist die Formatierung weg:

    Code
    TextView sd1 = (TextView) findViewById(R.id.sd2);
    		String text = String.format(this.getString(R.string.sd1));
    		CharSequence styledText = Html.fromHtml(text);
    		sd1.setText(styledText);


    In der Doku steht da auch was von username, mailCount in der String.format Parameterliste - da versteh ich überhaupt nicht wo das herkommen soll und was das bewirken soll...



    Vielleicht könnt ihr mir helfen meine Strings auch per Java formatiert angezeigt werden.


    Vielen Dank für eure Hilfe!

  • das problem ist vermutlich das du den text aus dem textview holst, der ist aber schon formatiert und die formatierung fällt dann vermutlich einfach weg.
    Das username und mailCount sind variablen für den formatstring, dieses %1$s steht für eine variable und wird bei String.format durch den wert von username ersetzt.
    Versuch mal das

    Code
    CharSequence styledText = Html.fromHtml(text);


    zu ersetzen durch

    Code
    CharSequence styledText = Html.fromHtml(getResources().getString(R.string.sd1));


    die zeilen davor kannst du dann weglassen wenn das funktioniert. (sollte es eig) da du String.format soweit ich weiß nur brauchst um das %1$s durch den wert von username zu ersetzen. Formatstring steht übrigens nicht fürs aussehen, sondern das der String solche %1$s werte hat die ersetzt werden sollen.

  • Okay, also quasi den String.format weglassen und die Resource gleich in die CharSequence mitübergeben:


    Code
    TextView sd1 = (TextView) findViewById(R.id.sd2);
    		CharSequence styledText = Html.fromHtml(getResources().getString(R.string.sd1));
    		sd1.setText(styledText);


    Schaut leider gleich aus bei oben angeführtem Code:
    [Blockierte Grafik: http://img525.imageshack.us/img525/5672/unbenanntba.jpg]


    links der Text aus der layout-xml, rechts aus der Java-Datei

  • hm dann weiß ich auch nicht weiter.
    ich würd noch Html.fromHTML weglassen, also dann setText(getResources().getString(R.string.sd1)), aber das wäre nur ausprobieren ;)
    denn das wäre eig genau dasselbe wie es direkt zuzuweisen wie dus beim ersten funktionierenden gemacht hast. Jedenfalls soweit ich weiß.
    naja kannsts ja ma probieren, wenn du zeit hast ;)

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!