¿Cómo se puede imprimir una cadena con subíndice o superíndice? ¿Puedes hacer esto sin una biblioteca externa? Quiero que esto se muestre TextViewen Android.
Técnicamente no es compatible con HTML, es decir, está creando un Spanned, que TextViews sí admite. Esencialmente CharSequences con información de estilo.
Dandre Allison
1
Esto no funciona para mí ... pero tal vez sea porque lo configuré dentro de mi archivo strings.xml. Lo subíndice para mí, pero lo recorta y no importa cuánto relleno ponga, siempre lo recorta.
JPM
¿No es increíblemente caro analizar este HTML?
A. Steenbergen
10
El enlace en respuesta ya no parece relevante.
Pang
3
Gracias por esto, pero la respuesta a continuación usando un SpannableStringBuilder es mucho mejor.
Esto realmente se ve bien, ¡gracias por compartir! El método Html.fromHTML () es conveniente, pero el superíndice no es más pequeño.
Daniel Schuler
¡Esto es mucho mejor! El método Html.fromHtml puede hacer que se corte el texto en superíndice.
Zach Sperske
Cuando utilizo este método, me gusta decir que 100 metros cuadrados equation.setText(blah+cs);no funciona. Sin embargo, funciona bien por separado. ¿Cómo conseguir que funcione?
Nadie
Mucho mejor que el método Html.fromHtml ()
científico
Por favor agregue una explicación
Aryeetey Solomon Aryeetey
48
Para todas las personas que preguntan, si quieren hacerlo más pequeño además de hacer un superíndice o un subíndice, solo necesitan agregar una etiqueta también. EX:
Hola, tu respuesta fue muy útil. Sin embargo, ¿qué código se puede utilizar como subíndice? Además, ¿cómo se llaman estos códigos si los busco en Google, son Unicodes?
Soy nuevo en apilar overflow, en ese momento no sé cómo usarlo.
mvnkalyani
8
La respuesta Aceptada está obsoleta ahora. Así que revise este código. Conseguí esto de algún sitio web. Olvidé el nombre, pero de todos modos gracias por este buen código de trabajo.
SpannableString styledString
=newSpannableString("Large\n\n"// index 0 - 5+"Bold\n\n"// index 7 - 11+"Underlined\n\n"// index 13 - 23+"Italic\n\n"// index 25 - 31+"Strikethrough\n\n"// index 33 - 46+"Colored\n\n"// index 48 - 55+"Highlighted\n\n"// index 57 - 68+"K Superscript\n\n"// "Superscript" index 72 - 83 +"K Subscript\n\n"// "Subscript" index 87 - 96+"Url\n\n"// index 98 - 101+"Clickable\n\n");// index 103 - 112// make the text twice as large
styledString.setSpan(newRelativeSizeSpan(2f),0,5,0);// make text bold
styledString.setSpan(newStyleSpan(Typeface.BOLD),7,11,0);// underline text
styledString.setSpan(newUnderlineSpan(),13,23,0);// make text italic
styledString.setSpan(newStyleSpan(Typeface.ITALIC),25,31,0);
styledString.setSpan(newStrikethroughSpan(),33,46,0);// change text color
styledString.setSpan(newForegroundColorSpan(Color.GREEN),48,55,0);// highlight text
styledString.setSpan(newBackgroundColorSpan(Color.CYAN),57,68,0);// superscript
styledString.setSpan(newSuperscriptSpan(),72,83,0);// make the superscript text smaller
styledString.setSpan(newRelativeSizeSpan(0.5f),72,83,0);// subscript
styledString.setSpan(newSubscriptSpan(),87,96,0);// make the subscript text smaller
styledString.setSpan(newRelativeSizeSpan(0.5f),87,96,0);// url
styledString.setSpan(newURLSpan("http://www.google.com"),98,101,0);// clickable textClickableSpan clickableSpan =newClickableSpan(){@Overridepublicvoid onClick(View widget){// We display a Toast. You could do anything you want here.Toast.makeText(MainActivity.this,"Clicked",Toast.LENGTH_SHORT).show();}};
styledString.setSpan(clickableSpan,103,112,0);// Give the styled string to a TextView
spantext =(TextView) findViewById(R.id.spantext);// this step is mandated for the url and clickable styles.
spantext.setMovementMethod(LinkMovementMethod.getInstance());// make it neat
spantext.setGravity(Gravity.CENTER);
spantext.setBackgroundColor(Color.WHITE);
spantext.setText(styledString);
Nota:android:textAllCaps="false" Ponga siempre su spantext.
El HTML.fromHTML (String) quedó en desuso a partir de API 24. Dicen que se use este en su lugar, que admite banderas como parámetro. Entonces, para salirse de la respuesta aceptada:
Respuestas:
o
Tareas comunes y cómo realizarlas en Android
fuente
Ejemplo:
fuente
equation.setText(blah+cs);
no funciona. Sin embargo, funciona bien por separado. ¿Cómo conseguir que funcione?Para todas las personas que preguntan, si quieren hacerlo más pequeño además de hacer un superíndice o un subíndice, solo necesitan agregar una etiqueta también. EX:
fuente
En el código, simplemente ponga esto "\ u00B2" así:
textView.setText("X\u00B2");
fuente
Si desea establecer el superíndice del archivo string.xml, intente esto:
recurso de cadena:
si desea que el superíndice sea más pequeño:
Código:
fuente
Es un poco tarde, pero lo siguiente funciona bien, use superíndice como carácter especial, usé char espacial aquí.
fuente
(o) Desde el archivo de recursos de cadena:
fuente
La respuesta Aceptada está obsoleta ahora. Así que revise este código. Conseguí esto de algún sitio web. Olvidé el nombre, pero de todos modos gracias por este buen código de trabajo.
Nota:
android:textAllCaps="false"
Ponga siempre su spantext.fuente
El HTML.fromHTML (String) quedó en desuso a partir de API 24. Dicen que se use este en su lugar, que admite banderas como parámetro. Entonces, para salirse de la respuesta aceptada:
Y si desea un código que también considere las API anteriores a 24:
Esta respuesta se derivó de: https://stackoverflow.com/a/37905107/4998704
Las banderas y otra documentación se pueden encontrar aquí: https://developer.android.com/reference/android/text/Html.html
fuente
Encontré este artículo sobre cómo usar un
Spannable
o en un archivo de recursos de cadena:<sup>
o<sub>
para superíndice y subíndice, respectivamente.fuente
En los
strings.xml
archivos, puede usar la<sup>3</sup>
etiqueta HTML . Funciona perfectamente para miEJEMPLO
fuente
Se llaman caracteres Unicode y Android los
TextView
admite. Copie el super / sub-script que desee de este Wiki: https://en.wikipedia.org/wiki/List_of_Unicode_characters#Superscripts_and_Subscriptsfuente
Superíndice y subíndice de recursos de cadenas de Android para letras
Realmente no tiene que usar un documento html si alguna de las letras que desea está representada aquí
Para "a" copia y pega este "ᵃ"
Puede copiar y pegar cualquiera de estos superíndices y subíndices directamente en su recurso de cadena de Android.
Ejemplo:
Resultado: Marca registrada ᵀᴹ
Letras de superíndice y subíndice
Superíndice en mayúsculas ᴬ ᴮ ᴰ ᴱ ᴳ ᴴ ᴵ ᴶ ᴷ ᴸ ᴹ ᴺ ᴼ ᴾ ᴿ ᵀ ᵁ ⱽ ᵂ
Superíndice minúsculo ᵃ ᵇ ᶜ ᵈ ᵉ ᶠ ᵍ ʰ ⁱ ʲ ᵏ ˡ ᵐ ⁿ ᵒ ᵖ ʳ ˢ ᵗ ᵘ ᵛ ʷ ˣ ʸ ᶻ
Subíndice minúsculo ₐ ₑ ₕ ᵢ ⱼ ₖ ₗ ₘ ₙ ₒ ₚ ᵣ ₛ ₜ ᵤ ᵥ ₓ
fuente
X 2
fuente