Como você pode imprimir uma string com um subscrito ou sobrescrito? Você pode fazer isso sem uma biblioteca externa? Quero que isso seja exibido em um TextView
Android.
Como você pode imprimir uma string com um subscrito ou sobrescrito? Você pode fazer isso sem uma biblioteca externa? Quero que isso seja exibido em um TextView
Android.
Respostas:
((TextView)findViewById(R.id.text)).setText(Html.fromHtml("X<sup>2</sup>"));
ou
Exemplo:
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);
ele não funciona. Funciona bem separadamente. Como conseguir esse trabalho?
Para todas as pessoas perguntando, se você quiser torná-lo menor além de fazer super ou subscrito, você só precisa adicionar a tag também. EX:
"X <sup><small> 2 </small></sup>"
No código basta colocar este "\ u00B2" Assim:
textView.setText("X\u00B2");
Se você deseja definir o sobrescrito do arquivo string.xml, tente o seguinte:
recurso de string:
<string name="test_string">X<sup>3</sup></string>
se você quiser que o sobrescrito seja menor:
<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>"));
(ou) Do arquivo de recurso de string:
<string name="test_string">
<![CDATA[ X<sup><small>2</small></sup> ]]>
</string>
A resposta aceita está obsoleta agora. Então, por favor, leia este trecho de código. Peguei isso em algum site. Esqueci o nome, mas de qualquer forma, obrigado por este bom código de trabalho.
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: Sempre coloque android:textAllCaps="false"
de seu spantext.
O HTML.fromHTML (String) tornou-se obsoleto a partir da API 24. Eles dizem para usar este, que oferece suporte a sinalizadores como parâmetro. Então, para sair da resposta aceita:
TextView textView = ((TextView)findViewById(R.id.text));
textView.setText(Html.fromHtml("X<sup>2</sup>", Html.FROM_HTML_MODE_LEGACY));
E se você quiser um código que considere APIs anteriores aos 24 anos também:
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 resposta foi derivada de: https://stackoverflow.com/a/37905107/4998704
Os sinalizadores e outras documentações podem ser encontrados aqui: https://developer.android.com/reference/android/text/Html.html
Para "a", copie e cole este "ᵃ"
Você pode copiar e colar qualquer um desses Superscripts e Subscripts diretamente no seu Android String Resource.
Exemplo:
<string name="word_with_superscript" translatable="false">Trademark ᵀᴹ</string>
Resultado: Marca Registrada ᵀᴹ
Letras sobrescritas e subscritas
Sobrescrito maiúsculo ᴬ ᴮ ᴰ ᴱ ᴳ ᴴ ᴵ ᴶ ᴷ ᴸ ᴹ ᴺ ᴼ ᴾ ᴾ ᴿ ᵀ ᵁ ⱽ ᵂ
Sobrescrito minúsculo ᵃ ᵇ ᶜ ᵈ ᵉ ᶠ ᵍ ʰ ⁱ ʲ ᵏ ˡ ᵐ ⁿ ᵒ ᵖ ʳ ˢ ᵗ ᵘ ᵛ ʷ ˣ ʸ ᶻ
Subscrito minúsculo ₐ ₑ ₕ ᵢ ⱼ ₖ ₗ ₘ ₙ ₒ ₚ ᵣ ₛ ₛ ₜ ᵤ ᵥ ₓ
Eles são chamados de caracteres Unicode, e o Android os TextView
suporta. Copie o super / sub-script que você deseja deste Wiki: https://en.wikipedia.org/wiki/List_of_Unicode_characters#Superscripts_and_Subscripts
yourTextView.setText(Html.fromHtml("X<sup>2</sup>"));
This will be the result in you yourTextView =
X 2