How to Display HTML in a TextView in Android

How to Display HTML in a TextView in Android

22 May 2024 Stephan Petzl Leave a comment Tech-Help

Displaying HTML content in a TextView is a common requirement in Android development. This article will guide you through the steps necessary to achieve this using the most effective and up-to-date methods available.

Understanding the Problem

To display HTML content, such as:

<h2>Title</h2><br><p>Description here</p>

in a TextView, you need to convert it into a format that TextView can render correctly.

Solution

The Html.fromHtml() method is the key to converting HTML content into a format that can be displayed in a TextView. Here is how you can do it in both Java and Kotlin:

Java

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
    textView.setText(Html.fromHtml("<h2>Title</h2><br><p>Description here</p>", Html.FROM_HTML_MODE_COMPACT));
} else { 
    textView.setText(Html.fromHtml("<h2>Title</h2><br><p>Description here</p>"));
}

Kotlin

textView.text = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
    Html.fromHtml(html, Html.FROM_HTML_MODE_COMPACT)
} else {
    Html.fromHtml(html)
}

Using HtmlCompat for Backward Compatibility

For a more backward-compatible solution, you can use HtmlCompat.fromHtml() from the androidx.core.text package. This approach eliminates the need for API version checks:

Sample Code

import androidx.core.text.HtmlCompat;
import android.text.Spanned;
import android.widget.TextView;

String htmlString = "<h1>Hello World!</h1>";

Spanned spanned = HtmlCompat.fromHtml(htmlString, HtmlCompat.FROM_HTML_MODE_COMPACT);

TextView tvOutput = (TextView) findViewById(R.id.text_view_id);
tvOutput.setText(spanned);

Practical Example

Consider a scenario where you have a string resource containing HTML content:

strings.xml

<string name="sample_string"><![CDATA[<h2>Title</h2><br><p>Description here</p>]]></string>

MainActivity.java

text.setText(Html.fromHtml(getString(R.string.sample_string)));

Conclusion

Displaying HTML content in a TextView can be achieved efficiently by using either Html.fromHtml() or HtmlCompat.fromHtml(), depending on your compatibility requirements. By following the methods outlined above, you can ensure that your HTML content is rendered correctly across different Android versions.

Enhancing Your Development Workflow

While the above solutions are effective, maintaining and testing your app’s UI can be time-consuming. This is where Repeato can make a significant difference. Repeato is a No-code test automation tool for iOS and Android, which allows you to create, run, and maintain automated tests for your apps quickly and efficiently.

By leveraging computer vision and AI, Repeato ensures that your tests are robust and easy to edit. This enables developers to focus on creating a great product instead of spending excessive time on testing. Additionally, Repeato allows non-technical colleagues or QA teams to handle test automation, further streamlining your development process.

For more information on how Repeato can benefit your development workflow, visit our blog or check out our documentation.

Like this article? there’s more where that came from!