texto studio plain mostrar example espaƱol ellipsize edittext android textview

studio - textview layout android



Android y & nbsp; en TextView (7)

El TextView debe respetar el espacio sin interrupciones

<string name="test">Hello&#160;world</string>

o

new TextView("Hello/u00A0world");

es posible agregar &nbsp; en TextView? ¿Alguien ha logrado una funcionalidad similar?

Quiero tener espacio no rompible en TextView.


Este es un ejemplo que usa nbsp en un TextView

<string name="text">Example:/u00A0</string>


Esto funcionó para mí:

if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.N) { textview.setText(Html.fromHtml(your string, Html.FROM_HTML_MODE_LEGACY)); } else { textview.setText(Html.fromHtml(your string); }


No he intentado esto para asegurarme de que realmente funciona, pero en un mundo ideal, TextView debe respetar el carácter de espacio no-break de Unicode ( /u00A0 ), que sería una solución más simple / ligera que HTML.


Una situación única con la que me encontré fue agregar un espacio no String.format a un recurso de cadena que tomaba los parámetros de String.format .

<resources> <string name="answer_progress" formatted="false">Answered %d of %d</string> </resources>

Traté de simplemente copiar y pasar el carácter de espacio sin interrupción en la cadena y fue reemplazado por un espacio antiguo normal después de la compilación.

Eliminar el formato = "falso" , numerar los args de formato y usar la notación de barra invertida funcionó para mí:

<resources> <string name="answer_progress">Answered %1$d/u00A0of/u00A0%2$d</string> </resources>


/u00A0 es un espacio sin interrupciones, /u0020 no es un espacio sin interrupciones


Es posible usar &nbsp; tener una solución legible Incluyendo /u00A0 o &#160; o &#xa0; / &#x00a0; en el texto realmente no transmite mucha información al lector del código fuente (o traductor para el caso), a menos que recuerde los códigos hexadecimales. Aquí hay una manera de usar la entidad nombrada en strings.xml :

<?xml version="1.0" encoding="utf-8"?> <!DOCTYPE resources [ <!ENTITY nbsp "&#160;"><!-- non-breaking space, U+00A0 --> ]> <resources> ... </resources>

Esto creará la declaración faltante. La declaración HTML original se puede encontrar en https://www.w3.org/TR/xhtml1/DTD/xhtml-lat1.ent partir de las DTD XHTML usuales. Todo esto funciona, porque el analizador XML lee estos y los sustitutos mientras carga el archivo, por lo que la entidad no estará presente en los recursos compilados resultantes.

&nbsp; en recursos de Android Text ( CharSequence )

<!-- Defined in <resources> --> <string name="html_text">Don/'t break <b>this&nbsp;name</b></string> <!-- Used in a layout --> <TextView android:layout_width="130dp" android:layout_height="wrap_content" android:background="#10000000" android:text="@string/html_text" />

Dispositivo y vista previa (la vista previa no reconoce HTML)

&nbsp; en recursos de cadena de Android (formateados)

<!-- Defined in <resources> --> <string name="formatted_text">%1$s is&nbsp;nice</string> <!-- Used in a layout --> <TextView android:layout_width="130dp" android:layout_height="wrap_content" android:background="#10000000" tools:text="@string/formatted_text" />

Luego en el código:

String contents = getString(R.string.formatted_text, "Using an &nbsp;"); ((TextView)view.findViewById(android.R.id.text1)).setText(contents);

Dispositivo y vista previa (¡la vista previa no reconoce las entidades y las cadenas de Java son texto literal!)

Otros trucos

Estos son solo ejemplos de uso de entidades DTD, úselas según su preferencia.

<!ENTITY con "/&apos;"><!-- contraction, otherwise error: "Apostrophe not preceded by /" Sadly &apos; cannot be overridden due to XML spec: https://www.w3.org/TR/xml/#sec-predefined-ent --> <!ENTITY param1 "&#37;1$s"><!-- format string argument #1 --> <string name="original">Don/'t wrap %1$s</string> <string name="with_entities">Don&con;t wrap &param1;</string>

Ambos ayudan a destacar: