Ich habe einfache HTML :
<h2>Title</h2><br>
<p>description here</p>
Ich möchte einen HTML-gestalteten Text in TextView
. Wie ist dies zu tun?
Ich habe einfache HTML :
<h2>Title</h2><br>
<p>description here</p>
Ich möchte einen HTML-gestalteten Text in TextView
. Wie ist dies zu tun?
Darf ich eine etwas hakelige, aber dennoch geniale Lösung vorschlagen! Ich habe die Idee von dieser Artikel und hat es für Android angepasst. Grundsätzlich verwenden Sie eine WebView
und fügen Sie den HTML-Code, den Sie anzeigen und bearbeiten möchten, in ein editierbares div-Tag ein. Auf diese Weise kann der Benutzer beim Tippen auf das WebView
erscheint die Tastatur und ermöglicht die Bearbeitung. Sie fügen einfach etwas JavaScript hinzu, um den bearbeiteten HTML-Code zurückzubekommen und voila!
Hier ist der Code:
public class HtmlTextEditor extends WebView {
class JsObject {
// This field always keeps the latest edited text
public String text;
@JavascriptInterface
public void textDidChange(String newText) {
text = newText.replace("\n", "");
}
}
private JsObject mJsObject;
public HtmlTextEditor(Context context, AttributeSet attrs) {
super(context, attrs);
getSettings().setJavaScriptEnabled(true);
mJsObject = new JsObject();
addJavascriptInterface(mJsObject, "injectedObject");
setWebViewClient(new WebViewClient(){
@Override
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
loadUrl(
"javascript:(function() { " +
" var editor = document.getElementById(\"editor\");" +
" editor.addEventListener(\"input\", function() {" +
" injectedObject.textDidChange(editor.innerHTML);" +
" }, false)" +
"})()");
}
});
}
public void setText(String text) {
if (text == null) { text = ""; }
String editableHtmlTemplate = "<!DOCTYPE html>" + "<html>" + "<head>" + "<meta name=\"viewport\" content=\"initial-scale=1.0\" />" + "</head>" + "<body>" + "<div id=\"editor\" contenteditable=\"true\">___REPLACE___</div>" + "</body>" + "</html>";
String editableHtml = editableHtmlTemplate.replace("___REPLACE___", text);
loadData(editableHtml, "text/html; charset=utf-8", "UTF-8");
// Init the text field in case it's read without editing the text before
mJsObject.text = text;
}
public String getText() {
return mJsObject.text;
}
}
Und ici ist die Komponente als Gist.
Hinweis: Ich brauchte nicht die Höhe ändern Callback aus der ursprünglichen Lösung, so dass hier fehlt, aber Sie können es leicht hinzufügen, wenn nötig.
Sie können gültiges HTML für Android erstellen TextView
unter Verwendung der HtmlDsl
Bibliothek auf Github: https://github.com/jaredrummler/HtmlDsl .
Die Bibliothek bietet syntaktischen Zucker, um den Code verständlicher und weniger fehleranfällig zu machen, indem sie nur Elemente und Attribute unterstützt, die von Android gerendert werden.
Beispiel für die Erstellung von HTML:
textView.setHtml {
h3("Android Versions:")
ul {
li {
a(href = "https://developer.android.com/about/versions/12/get") {
+"Android 12 Beta"
}
}
li("Android 11")
li("Android 10")
li("Pie")
li("Oreo")
li("Nougat")
li("Marshmallow")
li("Lollipop")
// ...
}
small {
sub {
+"by "
a {
href = "https://github.com/jaredrummler"
text = "Jared Rummler"
}
}
}
}
Unterstützte HTML-Elemente für Android TextView
:
<a href="...">
<b>
<big>
<blockquote>
<br>
<cite>
<dfn>
<div align="...">
<em>
<font color="..." face="...">
<h1>
<h2>
<h3>
<h4>
<h5>
<h6>
<i>
<img src="...">
<p>
<small>
<strike>
<strong>
<sup>
<tt>
<u>
<ul>
<li>
CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.
8 Stimmen
Möchten Sie die Tags anzeigen oder weglassen?
1 Stimmen
Ein funktionierendes Beispiel finden Sie unter diesem Link javatechig.com/2013/04/07/how-to-display-html-in-Android-view
1 Stimmen
Wenn Sie nach einer veralteten Lösung suchen, sind Sie hier genau richtig stackoverflow.com/questions/37904739/
1 Stimmen
Textview.setText(Html.fromHtml("your HTML")); ist die beste Methode, um nur HTML-Tags anzuzeigen. Es gibt auch eine Methode, um JS abzuspielen.
0 Stimmen
Android unterstützt nicht alle HTML-Tags. Prüfen Sie dies arkapp.medium.com/Android-set-html-in-text-view-b912e1a96b21 um besser zu verstehen, wie man in der Textansicht arbeitet.