Si se requiere mostrar una cadena de texto que contiene varias líneas, se puede hacer con el componente TextView a continuación mostraré diferentes formas de crear saltos de línea.
Componente TextView
En la vista donde queremos mostrar el texto multi-línea con sus saltos de línea:
<TextView
android:id="@+id/text_view"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:layout_marginEnd="16dp"
android:text="@string/multi_line" />
Método 1, salto de línea con \n
La forma más simple es usar los carácteres de escape \n para crear un salto de línea, dentro de un recurso string
<string name="multi_line">
Tras de esa cadena hay un \'salto de línea\'.\n
Está línea también finaliza con un salto de línea.\n
Después de esa línea hay un doble salto de línea.\n\n
fin.</string>
Los caracteres especiales de escape\n
Salto de línea\
r Retroceso\t
Tabulación horizontal\\
Contrabarra\'
Apóstrofe\"
Comillas dobles
Método 2, usar maqueteado HTML </br>
Otra forma de crear saltos de línea en un texto, es usando la marcado HTML, con la etiqueta </br> se puede realizar un salto de línea.
Para poder usar HTML dentro de un recurso string, el contenido se debe iniciar con el marcado especial, <![CDATA[ y finalizar ]]>
<string name="multi_line"><![CDATA[
Tras de esa cadena hay un \'salto de línea\'.</br>
Está línea también finaliza con un salto de línea.</br>
Después de esa línea hay un <b>doble salto de línea</b>.</br></br>
fin.]]></string>
Luego para setear el texto se requiere haceerlo des de código
val strHTML = getString(R.string.multi_line)
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.N) {
binding.textviewFirst.text = Html.fromHtml(strHTML,Html.FROM_HTML_MODE_LEGACY)
} else {
binding.textviewFirst.text = Html.fromHtml(strHTML)
}
o bien para simplificar su implementación usar la siguiente extensión de kotlin
fun String?.toHtml(): Spanned? {
if (this.isNullOrEmpty()) return null
return HtmlCompat.fromHtml(this, HtmlCompat.FROM_HTML_MODE_COMPACT)
}
//su uso
binding.textviewFirst.text = getString(R.string.multi_line).toHtml()
Demostración
