¿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 TextView
en Android.
¿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 TextView
en Android.
Respuestas:
((TextView)findViewById(R.id.text)).setText(Html.fromHtml("X<sup>2</sup>"));
o
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);
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:
"X <sup><small> 2 </small></sup>"
En el código, simplemente ponga esto "\ u00B2" así:
textView.setText("X\u00B2");
Si desea establecer el superíndice del archivo string.xml, intente esto:
recurso de cadena:
<string name="test_string">X<sup>3</sup></string>
si desea que el superíndice sea más pequeño:
<string name="test_string">X<sup><small>3</small></sup></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>
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
= 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: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:
TextView textView = ((TextView)findViewById(R.id.text));
textView.setText(Html.fromHtml("X<sup>2</sup>", Html.FROM_HTML_MODE_LEGACY));
Y si desea un 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://stackoverflow.com/a/37905107/4998704
Las banderas y otra documentación se pueden encontrar aquí: https://developer.android.com/reference/android/text/Html.html
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_Subscripts
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:
<string name="word_with_superscript" translatable="false">Trademark ᵀᴹ</string>
Resultado: Marca registrada ᵀᴹ
Letras de superíndice y subíndice
Superíndice en mayúsculas ᴬ ᴮ ᴰ ᴱ ᴳ ᴴ ᴵ ᴶ ᴷ ᴸ ᴹ ᴺ ᴼ ᴾ ᴿ ᵀ ᵁ ⱽ ᵂ
Superíndice minúsculo ᵃ ᵇ ᶜ ᵈ ᵉ ᶠ ᵍ ʰ ⁱ ʲ ᵏ ˡ ᵐ ⁿ ᵒ ᵖ ʳ ˢ ᵗ ᵘ ᵛ ʷ ˣ ʸ ᶻ
Subíndice minúsculo ₐ ₑ ₕ ᵢ ⱼ ₖ ₗ ₘ ₙ ₒ ₚ ᵣ ₛ ₜ ᵤ ᵥ ₓ
yourTextView.setText(Html.fromHtml("X<sup>2</sup>"));
This will be the result in you yourTextView =
X 2