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:
    [Blocked Image: 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 ;)

  • hmm schade.


    ja wenn ichs weglass hab ich dasselbe wieder, was ich sonst auch immer verwende ;)
    naja die HTML-Klasse werd ich außerdem brauchen das die HTML-Tags erkannt werden.


    Trotzdem danke für deine Hilfe, vll hat sonst noch jemand ne Idee?

  • Ich würde tippen, dass es was mit den Tags zu tun hat. Da die als plain text drin stehn, ignoriert der XML-Parser sie wahrscheinlich. Versuch mal < durch < und > durch > zu ersetzen.

Participate now!

Don’t have an account yet? Register yourself now and be a part of our community!