java android string superscript subscript

java - Subíndice y superíndice de una cadena en Android



string superscript (13)

¿Cómo se puede imprimir una cadena con un subíndice o superíndice? ¿Puedes hacer esto sin una biblioteca externa? Quiero que esto se muestre en un TextView en Android.


Ejemplo:

equation = (TextView) findViewById(R.id.textView1); SpannableStringBuilder cs = new SpannableStringBuilder("X3 + X2"); cs.setSpan(new SuperscriptSpan(), 1, 2, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); cs.setSpan(new RelativeSizeSpan(0.75f), 1, 2, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); cs.setSpan(new SuperscriptSpan(), 6, 7, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); cs.setSpan(new RelativeSizeSpan(0.75f), 6, 7, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); equation.setText(cs);


El HTML.fromHTML (String) quedó obsoleto a partir de la API 24. Dicen usar este en su lugar, que admite indicadores como un parámetro. Entonces para irse de la respuesta aceptada:

TextView textView = ((TextView)findViewById(R.id.text)); textView.setText(Html.fromHtml("X<sup>2</sup>", Html.FROM_HTML_MODE_LEGACY));

Y si quiere código que también considere las API anteriores a 24:

TextView textView = ((TextView)findViewById(R.id.text)); if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.N) { textView.setText(Html.fromHtml("X<sup>2</sup>", Html.FROM_HTML_MODE_LEGACY)); } else { textView.setText(Html.fromHtml("X<sup>2</sup>")); }

Esta respuesta se derivó de: https://.com/a/37905107/4998704

Las banderas y otra documentación se pueden encontrar aquí: https://developer.android.com/reference/android/text/Html.html


En el código simplemente ponga esto "/ u00B2" De esta manera:

textView.setText("X/u00B2");


En los archivos strings.xml , puede usar la etiqueta HTML <sup>3</sup> . Me funciona a la perfección

EJEMPLO

<string name="turnoverRate">Turnover rate m<sup>3</sup>/m<sup>2</sup>/hour:</string>


Encontré this artículo sobre cómo usar un Spannable o en un recurso de cadena: <sup> o <sub> para superíndice y subíndice, respectivamente.


La respuesta aceptada está en desuso ahora. Así que por favor revisa este fragmento de código. Lo obtuve de un sitio web. Olvidé el nombre, pero de todos modos, gracias por este buen código de trabajo.

SpannableString styledString = new SpannableString("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(new RelativeSizeSpan(2f), 0, 5, 0); // make text bold styledString.setSpan(new StyleSpan(Typeface.BOLD), 7, 11, 0); // underline text styledString.setSpan(new UnderlineSpan(), 13, 23, 0); // make text italic styledString.setSpan(new StyleSpan(Typeface.ITALIC), 25, 31, 0); styledString.setSpan(new StrikethroughSpan(), 33, 46, 0); // change text color styledString.setSpan(new ForegroundColorSpan(Color.GREEN), 48, 55, 0); // highlight text styledString.setSpan(new BackgroundColorSpan(Color.CYAN), 57, 68, 0); // superscript styledString.setSpan(new SuperscriptSpan(), 72, 83, 0); // make the superscript text smaller styledString.setSpan(new RelativeSizeSpan(0.5f), 72, 83, 0); // subscript styledString.setSpan(new SubscriptSpan(), 87, 96, 0); // make the subscript text smaller styledString.setSpan(new RelativeSizeSpan(0.5f), 87, 96, 0); // url styledString.setSpan(new URLSpan("http://www.google.com"), 98, 101, 0); // clickable text ClickableSpan clickableSpan = new ClickableSpan() { @Override public void 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: Siempre coloque android:textAllCaps="false" de su spantext.


Mordió tarde, pero después de simplemente trabajar bien, usar superíndice como carácter especial, utilicé el carácter espacial aquí.

<string name="str">H₂</string>


Para todas las personas que preguntan, si desea hacerlo más pequeño además de hacer super o subíndice, solo necesita agregar una etiqueta también. EX:

"X <sup><small> 2 </small></sup>"



Si desea establecer el superíndice desde el archivo string.xml intente esto:

recurso de cadena:

<string name="test_string">X&lt;sup&gt;3&lt;/sup&gt;</string>

si desea que el superíndice sea más pequeño:

<string name="test_string">X&lt;sup&gt;&lt;small&gt;3&lt;/small&gt;&lt;/sup&gt;</string>

Código:

textView.setText(Html.fromHtml("Anything you want to put here"+getString(R.string.test_string)));


((TextView)findViewById(R.id.text)).setText(Html.fromHtml("X<sup><small>2</small></sup>"));

(o) desde el archivo de recursos de cadena:

<string name="test_string"> <![CDATA[ X<sup><small>2</small></sup> ]]> </string>



yourTextView.setText(Html.fromHtml("X<sup>2</sup>")); This will be the result in you yourTextView =

X 2