2016-05-06 12 views
0

Ich frage mich, ob es eine Möglichkeit gibt, das HTML-Markup zu bekommen.Android - HTML edittext

Zum Beispiel:

finalString = " <font color='#2caeac'>@test</font>"; 
editetext.setText(Html.fromHtml(finalString)); 

Nun, wenn ich meine EditText wie diese bearbeiten möchten:

new_string = edittext.getText().toString(); // getting my "@test"` 
new_string = new_string+"<font color='red'>newString</font>"; 
edittext.settext(Html.fromHtml(new_string)); 

Dann meine new_string fangen nicht die Farbe von "finalString".

Wie ist es möglich, die Farbe von finalString zu bekommen?

Antwort

0

Ich dachte an eine kleine knifflige Lösung, die das Ersetzen von Tags in einem HTML-Text beinhaltet. Die Erklärung ist in den Kommentaren des Codes.

String finalString = "<font color='#2caeac'>@test</font>"; 
textView.setText(Html.fromHtml(finalString)); 

// get the text with html 
String new_string = Html.toHtml(textView.getText()); 
// the result will be something like <p dir="something">text_with_html_here</p> 
// get the layout direction (above api 17 you can't use getDirection()) 
final int direction = Character.getDirectionality(Locale.getDefault().getDisplayName().charAt(0)); 
// check if it's RTL 
boolean isRTL = direction == Character.DIRECTIONALITY_RIGHT_TO_LEFT || direction == Character.DIRECTIONALITY_RIGHT_TO_LEFT_ARABIC; 
String layoutDirection = isRTL ? "rtl" : "ltr"; 
// replace raw tags added with toHtml() 
new_string = new_string.replace("<p dir=\"" + layoutDirection + "\">", "").replace("</p>", ""); 
// use the String 
new_string = new_string + "<font color='red'>newString</font>"; 
textView.setText(Html.fromHtml(new_string));